一、概述
目前的计算机的最小存储单位是字节(8bit),对于不同大小的整数分别使用
1个、2个、4个、8个字节存储。但实际存储的2进制位是什么样的呢?
二、整数的存储
- 0 : 全是0表示
- 正整数 : 直接转换为2进制存储
-
负整数 : 使用补码形式存储。
以8位存储进行学习
三、正整数的2进制存储----源码
把正整数换为2进制,然后凑够8位,不够添0,第一位理解为符号位。
10=8+2=1010=0b00001010
11111111=255
思考: 1个字节能够表示最大的整数是多少?
四、负整数的2进制存储(补码)
(一)、求其绝对值的2进制表示(类似于正数)----原码
|-5|=5=0b00000101
(二)、然后每位取反------反码
0b00000101
0b11111010
(三)、然后+1得到补码-------补码
0b11111010+1=0b11111011
即-5=0b11111011
五、负数为什么用补码表示
一个数用什么样的2进制序列表示都可以,只要保证一一对应关系。
(一)、为什么不用直接表示法呢?
如果第一位是符号位,则:
5= 0000 0101
-5= 1000 0101
--------------求和
-10=1000 1010
(二)、使用补码的好处?
答:便于计算,如:
5= 0000 0101
-5= 1111 1011
---------------求和
1 0000 0000 (超过8位,溢出不要)得到0
思考:-128的2进制是什么?
六、总结
- 如果最高位是0,则表示是正数,如果是1则表示负数
- 根据补码规则,-1=0b1111 1111;-127=0b1000 0001
- 根据补码规则,0b1000 0000=-128(-127-1=0b1000 0001-1)
- 8位2进制能表示的整数范围是(-128~127)