数据宽度
计算机:内存!给数据增加数据宽度!
C、C++和Java都需要定义数据的类型。计算机底层需要我们给这些数据定义宽度。
位: 0 1
字节:0-0xFF
字: 0-0xFFFF
双字:0-0xFFFFFFFF
在计算机中,每一个数据都需要给它定义类型。给它定义宽度。在内存中的宽度。
有符号数无符号数
数据都是有宽度的,每个数据代表什么意思呢?二进制
0 1 0 1 0 1 0 1
规则,二进制解码增加一个规则?
无符号数规则
你这个数字是什么,那就是什么
1 0 0 1 1 0 1 0 十六进制:0X9A 十进制:154
有符号数规则
最高位是符号位:1(负数) 0(正数)
1 0 0 1 1 0 1 0
如何转换?
原码反码补码
编码规则
有符号数的编码规则
原码:最高位符号位,对其它的位进行本身的绝对值即可。
反码:
- 正数:反码和原码相同
- 负数:符号位一定是1,其余位对原码取反。
补码:
- 正数:补码和原码相同
- 负数:符号位一定是1,反码+1
测试
# 8位 # 如果是正数,那就是一样的。 1 # 原码:0 0 0 0 0 0 0 1 # 反码:0 0 0 0 0 0 0 1 # 补码:0 0 0 0 0 0 0 1 # 如果是负数 -1 # 原码:1 0 0 0 0 0 0 1 # 反码:1 1 1 1 1 1 1 0 # 补码:1 1 1 1 1 1 1 1 -7 # 原码:1 0 0 0 0 1 1 1 # 反码:1 1 1 1 1 0 0 0 # 补码:1 1 1 1 1 0 0 1 3+5 = 8 0 1 2 3 4 5 0 1 10 11 100 101 11 101 1000 # 二进制的标志 2 10 4 100 8 1000
如果看到一个数字,二进制的。需要了解它是有符号数还是无符号数。