数制

数制

数制是用一组固定的数宇和一套统一的规则来表示数的方祛。数值的计算一般都是近位计算。按照进位的规则进行计数的数制,称为进位计数制。常见的进位计数制有二进制,八进制,十六进制,十进制就是我们生活当中通用的数制,满十进一

进位计数制有两个基本要素:基数和权。

基数

基数是指某进位计数制中允许使用的数字的个数。

  • 二进制基数就是2,八进制基数就是8
  • 大于10的基数当单个数字超过9的时候会用其他符号表示,例如在十六进制中10用a表示,直到F(15)

以基数为底,以某一数字所在位置的序号为指数的幂,称为该数字在该位置的权。

以十进制数123.45来说每个数字的权都不同

  • 小数点从左往右边的权分别为10(基数)^0,10^1,10^2
  • 小数点从左往右边的权分别为10^-1,10^-2

数制计算方法

在c语言中,为了表示一个数字为八进制,会在其加个前缀0,比如050就表示42,前缀0X代表十六进制数字

1.转十进制的方法通常为:从左到右,当前位数值*权相加

  • 二进制的1101: (1*2^3)+(1*2^2)+(0*2^1)+(1*2^0)=13
  • 八进制的426: (4*8^2)+(2*8^1)+(6*8^0)=278
  • 十六进制1af: (1*16^2)+(10*16^1)+(15*16^0)=431

2.十进制转其他进制的算法:数值除以基数,取商直到比基数小,再倒取余数

  • 十进制33转二进制:

    33/2=16……1
    16/2=8……0
    8/2=4……0
    4/2=2……0
    2/2=1……0

    倒取余数后二进制的33就表示为100001

  • 同理十进制674转八进制:

    674/8=84……2
    84/8=10……4
    10/8=1……2

    倒取余数后八进制的674就表示为1242

  • 十进制685转十六进制:(商)+基数 * 小数

    685/16=42.8125
    42/16=2.625

    (2)+(0.625*16)+(0.8125*16)=2 + 10(a) +13(d)
    所以最后转换的十六进制就为2ad

my name is Hazlank,it have some means?no no no,sb,it just have means for me