基础概念

原码

原码表示与机器数真值表示的一样,即用第一位表示符号其余位表示数值

原码补码反码转换

进制转换

最常见的进制转换10进制2进制10进制16进制负数转为16进制十进制负数转为十六进制

常规进制转换

整数进制转换

除以R取余法。即整数部分不断除以R取余数,直到商为0为止,从下往上取值

二进制转八,十六换技巧

小数点为中心,将数据分为两组,每3/4位一组,不够位数在两侧补0

二进制转为八进制或十六进制
二进制转为八进制或十六进制

八/十六进制转二进制

以小数点为中心,将对应的八进制转为二进制表示的三位,将每个十六进制转为四个二进制位数

八/十六进制转为二进制
八/十六进制转为二进制

小数进制转换

乘以R取整法,即小数部分不断R取整数,直到积为0达到有效精度为止,最先得到的整数为R进制的最高位,最后得到的整数位为最低位,从上往下取。

小数部分进制转换

转换流程

  • 负数转换为正数
  • 先将十进制转换为二进制,并补位
  • 反码
  • 补码
  • 转为十六进制

-6为例

# 绝对值6的二进制码并补位后为
0000 0110
#根据原码求反码
1111 1001
# 根据反码求补码
1111 1010
# 每四位一组合,组成十六进制
FA

-6的补码表示

在计算机系统中

在实际上使用-0的补码表示-128,所以-128并没有原码反码表示,只要补码是[1000 0000] 其十进制数值就是-128

因为补码能多存储一个-128,而且在计算机底层中存储的是补码,所以在计算机中一个8位的二进制数的存储范围是用补码表示的[-128,127]

牢记

  • 二进制的最高位是符号位0表示正数1表示负数
  • 正数原码反码补码都一样,三码合一
  • 负数的反码 = 它的原码符号位不变,其它位取反
  • 负数的补码 = 它的反码 +1
  • 负数反码 = 负数的补码-1
  • 0反码补码都是0

参考资料