1.负数的表现形式,为何如此设计?ide
负数的表现形式是正数取反加一。原理是正负数相加值为0.如此设计正负值相加时首位的1因为超出表示范围会溢出。获得符合补码表示法的正确数值。spa
好比byte类型的二进制表示的数,1000 0001 + 0111 1111 = (byte类型是8位,第9位是1超过范围)1 0000 0000,因此取前面8位,0000 0000,值就为0了。设计
--------------------------------------------------orm
2.-128是在内存中是如何存储的?推算过程?内存
-128在8位的字节存储结构中=1000 0000,在补码表示法中,1000 0000的补码也是1000 0000,因为它的符号位是1,表明负数则它表示-128。it
若是用-127-1的方式推算-128,则过程以下class
+127=0111 1111,-127=1000 0001,-128=-127-1=1000 0000原理
-------------------------------------------------二进制
3.若是字节表示为11111111,则其真实数据是多少?数据
从符号位来看这是一个负数,先获得它的正数。1111 1111的取反加1为0000 0001,则真实数据为+1
--------------------------------------------------
4.正负数是否都支持补码的方式?
正负数都支持补码的方式
---------------------------------------------------
5.正数是不是负数的减一取反?
是,127=0111 1111=~(1000 0001-1)=~1000 0000=0111 1111
126=0111 1110=~(1000 0010-1)=~1000 0001=0111 1110
125=0111 1101=~(1000 0011-1) =~1000 0010=0111 1101