# 有符号整数的原反补码和无符号整数的 无码
无符号整数就是普通的二进制数
有符号整数就不一样了,分为原码、反码、补码
原码为符号位 + 普通二进制的数值位
# 对于负数,即符号位为 1
反码为原码数值位取反
补码为反码加一反码就纯纯工具人跳板咯
甚至可以不需要这个工具人!
手算可以将从右往左第一个一左侧所有数值为取反
这个算一下就好理解了
不像补码的原理,涉及数论的群论
之前学离散数学还没学到群论,加上自己以后应该不会学密码学,就不踩这个坑了
# 对于正数
啥都不变
# 运算
总之,这样一切就统一了
加法直接加,溢出的位直接舍
减法就减去这个数的相反数
相反数也好处理,方法也一样
全部位取反后加一
# 特性
n+1 bit | 合法表示范围 | 最大数 | 最小数 | 0 |
原码 | [,] | 0111...111 | 1111...111 | 0000...000 或 1000...000 |
反码 | [,] | 0111...111 | 1000...000 | 0000...000 或 1000...000 |
补码 | [,] | 0111...111 | 1000...000 | 0000...000 |
无符号整数 | [0,] | 1111...111 | 0000...000 | 0000...000 |
# 移码
补码的符号位取反
这样变为无符号整数一样的了
没具体讲,以后课讲了再补一下