数字进制
字数: 0
  • 1 字 (word) = 2 个字节
  • 1 字节 (byte) = 8 比特 (bit)

有符号数

If the MSB is 1 then the number is negative, otherwise positive ordinary binary.

原码

Sign-magnitude,最高位是 sign 表示符号,其余位是 magnitude 表示数值。
二进制
十进制
0111 1111
127
1111 1111
-127
  • 因为需要分别处理符号位和数值部分,它无法简单地进行加减运算。
  • 它还存在 +0 和 -0 两个表示零的值,会导致一些问题。

反码

One's complemen
  • 正数的表示与原码相同(即不变)
  • 负数的表示即把每一位取反
二进制
十进制
0111 1111
127
1000 0000
-127

  • Invert(反转):将二进制数中的每个位取反(0变1,1变0)。可以通过使用位逻辑运算符“非”(NOT)或位取反运算符(~)来实现。
    • 例如,对于二进制数 1010,反转后变为 0101
  • Reverse(翻转):将二进制数中的位按照相反的顺序重新排列,即将最左边的位移到最右边,最右边的位移到最左边。可以通过使用位移和按位操作符来实现。
    • 例如,对于二进制数 1010,翻转后变为 0101

补码

Two's complement
  • 正数的表示与原码相同
  • 负数的表示在反码的基础上加 1
二进制
十进制
0111 1111
127
1000 0000
-128
1000 0001
-127
补码可以直接进行加减法运算
  • 补码的加法 ➡️ 将相加得到的结果(再按照补码的规则转换为原码)
  • 补码的减法 ➡️ 将减数的补码按位取反再加 1,然后与被减数的补码相加

十六进制

Hexadecimal
英文字母 A,B,C,D,E,F 分别表示数字 10~15

十进制

负数十进制
notion image

转二进制

四个一组,不够补0,每组各个值为8,4,2,1

八进制

Octal
采用 0~7 来表达一个数

十进制

notion image

转二进制

三个一组

BCD 码

Binary-Coded Decimal‎
将每个十进制数字编码成一个4位的二进制数形式
  • BCD 字节的高 4 位(称为“区位”,zone表示符号,其余称为数字 (digit)
    • notion image
       

8421 码

最常用的 BCD 编码方式,其他方式还有 5421 码、2421 码
notion image
💡 BCD码在精度方面有很大的提高
  • 例如,十进制数 0.3 在存储为二进制数时是一个循环小数。如果从二进制数转换回十进制数后则变为了 0. 296875,结果造成误差。
  • BCD 编码系统中,十进制数 0.3 直接存储为 11110011,避免误差。

压缩 BCD 码

Packed
将多个相连的数字放入相邻的半字节时,只留下一个 4 位的半字节给的符号。
  • 例:-1265
    • 非压缩码:1111 0001 1111 0010 1111 0110 1111 0101
    • 压缩码 在低位数字后面加上符号,在高位补全0
      • notion image
 
2023 - 2026