有符号数 signed %d
符号位+数值位(例如:int i = +7;)
int 类型占4个字节,1个字节占8个位,int占32个比特位
7 根据8421码得到二进制原码
(0b00000000000000000000000000000111)
int 类型的表数范围:
计算机中存储有符号数的时候是按照补码的形式存进去的。
正数的原码、反码、补码都一样
负数的原码、反码、补码就不一样了
-7的原码(计算机是原码变成补码存进去)
(0b10000000000000000000000000000111)
-7:存储到计算机的流程
原码:0b10000000000000000000000000000111
反码:-1=0b10000000000000000000000000000110
补码:0b11111111111111111111111111111001(符号位保持不变)
-7:拿取出来的流程
补码:0b11111111111111111111111111111001
反码:-1=0b11111111111111111111111111111000
原码:0b10000000000000000000000000000111(符号位保持不变)
内存机构的最小寻址单位——字节,Byte,
1Byte==8bit(00000000)1字节最大的数是(11111111)对应的10进制数是:
根据8421码对应的数进行相加
128+64+32+16+8+4+2+1
得到255
signed int存储的值范围
最大值:4个字节 32个最大的比特位
最大值原码:11111111111111111111111111111111
反码:-1=00000000000000000000000000000000
最少值的补码:01111111111111111111111111111111=2^31-1
最少值:4个字节 32个最小的比特位
最少值原码:00000000000000000000000000000000
反码:-1=10000000000000000000000000000000 (减去1只是将符号位反转)
最大值的补码:11111111111111111111111111111111=-2^31-1
结论:
反码是将原码进行减一操作,补码,原码都可以是进行反转操作
计算机存储数据流程将原码——反码——再补码(存储是补码是反转)
计算机拿取数据流程将补码——反码——再原码(拿取是原码是反转)
网友评论