7. 进制转化的原理

用0开头的表示该整数是八进制表现形式,如:0254;用0x开头的表示该整数是十六进制表现形式,如:0xAC;

对于八进制数0254,要转换成十进制数,就是以各个位上的数值乘以基数8的(n-1)次方,即

   0254=4*8^0 + 5*8^1 + 2*8^2=4+40+128=172

所以八进制数0254的十进制表现形式是172。 

同理,二进数和十六进数要转化为十进数,都是以各个位置上的数值乘以该进制数基数的(n-1)次方后,相加得到和,即为该进制数的十进制表现形式。

若是要由十进制转化为二进制,则是用十进制数除以2(即该进制的基数),依次取余,直到最后不能整除该基数为之,从最后一个余数依序往前,得到的就是该进制数的二进制表现形式。

整个思路可以参考下图:
图片 而二进制数如何快速转化为八进制/十六进制呢?

二进制数要转化为八进制,就是将二进制数从尾往前数,3个位为1组,最后不足3个位的在前面加0补足。然后每组转化为十进制形式后依序组合,就能得到该二进制数的八进制表现形式。

同理二进制要转化为十六进制,就是将二进制数从尾往前数,4个位为1组,最后不足4个位的在前面加0补足。然后每组转化为十进制形式后依序组合,就能得到该二进制数的十六进制表现形式。
负数的二进制其实就是该负数的正数的二进制形式取反之后,与二进制数1(0001)相加得到的二进制形式。如下图:
图片
负数的二进制形式的最高位是1.


原文地址:https://www.cnblogs.com/youyuanjuyou/p/8099639.html