本帖最后由 oyangningtao 于 2022-1-22 12:49 编辑
3. 计算机常用进制和进制间的转换一个字节由8bit组成,用二进制表示就是00000000——11111111,十进制就是0——256,二进制表示起来太麻烦,直接用十进制又不能直观的与位进行转换。所以,在程序和文献中经常用16进制来表示数据,为什么呢?我们先来看不同进制间数值的转换 一个n进制数到十进制数的转换有个概念叫基数和位权,以二进制数10100011为例: 它的基数是2,位权就是(2^位),也就是说当位=1时,在这位上如果是1,那就代表10进制数的2,所以m位二进制到十进制转换就是: 所以,10100011就等于163。 同样,16进制数,基数是2,位权是(2^位),16进制包含0——F十六个数字,A相当于10,B相当于11以此类推F相当于15,例如: 可以看到,二进制转换成十进制后,看不出十进制数与位模式的对应关系,但是可以看到: 0011 = 3 1010 = 10 = 0xA 实际上,一个16进制数就是与4个bit对应,所以二进制与十六进制之间转换非常直接,因此用16进制来表示二进制数。二进制转换成10进制也可以通过转成16进制进行。 小数部分不同进制怎么转成十进制,也是一样的,由基数和位权确定以二进制为例: 所以1010b=1*2^-1 + 0* 2^-2+1*2^-3+0*2^-4=0.625 那么十进怎么转换成二进制呢,反过来计算: 0.625 * 2 = 1 + 0*2^-1+1*2^-2+0*2^-3=.......................................小数点后第一位:1 0*2^-1+1*2^-2+0*2^-3=0.125.....................................................0.625*2的小数部分 0.125*2=0+1*2^-1+0*2^-2............................................................小数点后第二位:0 1*2^-1+0*2^-2=0.5........................................................................0.125*2的小数部分 0.5*2 = 1 + 0 * 2^-1........................................................................小数点后第三位:1,0.5*2小数部分为0结束
|