本帖最后由 遗失的美好YXJ 于 2014-6-30 23:23 编辑
今天正好学2进制,一开始也是云里雾里的,不过现在觉得应该弄明白怎么回事了.为什么那么难理解的原因是:负数的二进制是先有结果(负数的二进制码在计算机中按照逻辑就应该这样的),然后再有正数怎么转化成二进制的方法(正数的二进制取反加1).我们很容易误解为,转换方法是先定义好的,负数的二进制表示是由方法得出来的,其实正好相反.
为了说byte型的-128为什么是1000 0000,我先说为什么byte型的-1为什么是1111 1111;这其实是一个问题,弄懂-1,-128一样的.
因为byte型只有8个bit.可以表示的数据总量是256个.又要必须得能表示负数第一位设计用来表示正负的符号位.
那么正数的1是0000 0001(这个很好理解),那么1+(-1)=0,0是0000 0000,整个1+(-1)=0(1 0000 0000存入byte中1被舍去了)必须符合二进制加法的运算逻辑,那么-1必须是1111 1111.所以是先得出的-1的byte型的结果是1111 1111(这里我不是用0000 0001取反+1得出的).用同样的逻辑可以得到byte型的-2是1111 1110;然后依次类推一直可以得到1000 0000是-128.然后再根据byte型的2进制正负数的关系总结出的方法:正数的二进制位取反加1就是负数的二进制表示.
所以负数的二进制码按先有负数的二进制码这个结果,再总结出算负数二进制码的方法.现在书本上直接跟你说负数的二进制是正数取反+1,有点本末倒置,所以比较难理解.
(以上纯属个人理解)
|