开篇——进制转换

十进制对任意进制数转换时,将其除以进制类型取余倒序排列
其他进制之间的转换使用“8421”法:

1.十进制——>二进制(以一个位数为单位进行分割)

8+4+2+1=15可以写成:\(2^3+2^2+2^1+2^0=15\)

若十进制数大于15,则依次按照2的阶次增加数值,且该数值必须大于该十进制数。

比如对于十进制数39(>15): \(2^5+2^4+2^3+2^2+2^1+2^0=63\)

比如: \(10=8+2=8+0+2+0\)
8 4 2 1四位数上,只有8 2上对应有数值,因此记为1,其它空位记为0.因此10转换为二进制为1010
再比如 \(39=32+0+0+4+2+1\)

16 8上空位,则39转换为十进制为100111

2.十进制——>八进制(以三个位数为单位进行分割)

八进制数:0 1 2 3 4 5 6 7
比如:\(39=32+0+0+4+2+1\)

根据8 4 2 1法可得: \((39)_2=100111\)

利用4 2 1为一组进行分割,不够用0补:

1 0 0 | 1 1 1
4 2 1 | 4 2 1

三位为一组,只看对应于14 2 1,并将满足条件的值相加:
第一组:4 + 0 + 0 = 4;
第二组:4 + 2 + 1 = 7
则: \((39)_8=47\)

3. 十进制——>十六进制(以四个位数为单位进行分割)

同样的取39为例:其二进制数为100111,只有六位,以四位为一组时需补0:

0 0 1 0 | 0 1 1 1
8 4 2 1 | 8 4 2 1

四位为一组,只看对应于18 4 2 1,并将满足条件的值相加:
第一组:0 + 0 + 2 + 0 = 2;
第二组:0 + 4 + 2 + 1 = 7
则: \((39)_{16}=27\)

注意: 在C语言中,二进制不会被直接识别头部加0b,对于八进制需在头部添加 0,对于十六进制则需要在头部添加0x

posted @ 2023-06-29 16:21  假行僧me  阅读(24)  评论(0编辑  收藏  举报