在开始学进制转换的时候, 先把(21=2 22=4 23 =8 24 =16 25 =32 26 =64 27 =128 28 =256 29 =512 210 =1024) 记住可以让之后的运算简洁一点
十六进制(1 2 3 4 5 6 7 8 9 A B C D E F)
当存在二进制 (负数) 时, 如何判断二进制为负数?
可以根据二进制的左起第一位的数判断, 当左起第一位为 1 时, 如 10110110, 该二进制为负数,
当左起第一位为 0 时, 如 00110110, 该二进制为正数.
二进制转十进制
当二进制为正数时, 将二进制每个数都与对应的数对相乘, 从右侧起第一个叫第零位, 与 20 相乘, 第二个叫第一位, 与 21 相乘....
比如 00110110
计算方法:
先将二级制对应相乘00110110>>0*27+0*26+1*25+1*24+0*23+1*22+1*21+0*20==0+0+32+16+0+4+2+0=54
所以该二进制的十进制为 54
当二进制为负数时, 按位取反后加 1 可以得到对应的正数, 然后加上负数即可.
比如 10110110
计算方法:
先按位取反10110110>>>>01001001
在加 1 01001001+1>>01001010
再转为十进制01001010>>>74, 再加上负号, 所以上面二进制负数对应的十进制为 -74
十进制转为二进制
当十进制为正数时, 可以将十进制除以 2 取余数, 除到 0 为止.
比如 54
计算方法:
先除 2 取余数54/2........0 第零位
- 27/2........1
- 13/2........1
- 6/2..........0
- 3/2.........1
1 第六位
最后得出二进制位 110110, 编程习惯将其补成 8 位, 所以最后二进制为 00110110
当十进制为负数时, 可以将负数对应的正数转换成二进制, 然后对二进制按位取反后加 1 即可
比如 -74
计算方法:
十进制 - 74 所对应的正数为 74, 将其转换为二进制
先除 2 取余数74/2...........0 第零位
- 37/2............1
- 18/2............0
- 9/2............1
- 4/2............0
- 2/2............0
1 第七位
最后得出二进制 01001010
, 再按位取反01001010>10110101
, 再加 110110101>10110110
得出来的二进制位 10110110
负数转换成八进制, 十六进制, 只需在补码 (二进制) 的基础上, 3 位合成一位计算, 或者 4 位合成一位计算
-3 的转换成二进制为:
11111101
八进制则将 - 3 的二进制从右至左每 3 位为一个单元, 不够三位用 0 补 即:
011 111 101
计算每一个单元, 结果为: 375
十六进制则将 - 3 的二进制从右至左每 4 位合并为一个单元, 即:
1111 1101
计算后为: FD
来源: https://www.cnblogs.com/zhoujinjian/p/8894179.html