黑马程序员技术交流社区

标题: 关于二进制的一些总结 [打印本页]

作者: 杨闯    时间: 2013-4-5 02:04
标题: 关于二进制的一些总结
先说下发这个贴的原因吧,以前看另一个老师视频的时候,一直认为 -5 的二进制值是 10000101
刚接触毕老师的视频,听到他教的是 11111011,
两个老师竟然教的不一样,究竟是谁错了?
好吧,其实都没有错,这其中牵扯到了二进制的原码.反码.补码
下面是在网上找的一些资料,有些是根据自己的理解添加上去的,有不对的地方希望大家能指出来!在此感谢。

1:二进制的最高位是符号位,0-->正数 1-->负数
2:正数的原码,反码,补码都是一样的
3:负数的反码等于 它的原码符号位不变,其他位取反(1变成0,0变成1)
4:  0的反码,补码都是0
5:java中的数都是有符号的(感觉这句话跟多余一样,求解)
6计算机运算时,都是以补码的方式来运算(我们在位运算时运算后的结果也是补码,如果结果是负数的话,要转为原码【先 -1 再取反】)


通过上面的总结,可以发现,A老师所说的 10000101是 -5的原码。而毕老师则讲的11111011则是计算机运算中的补码形式
即  -5: 原码 100000101
              反码 111111010     (取反)
              补码  111111011   (加1)

eg:~2
       原码  00000010
       取反   11111101 (取反后的结果是补码,正数不变,负数要转为原码)
                 11111100   (先减1)
      补码    10000011   (符号位不变,其他位取反)
                          (结果为—3)

最后说明一下:二进制中,一个字节占8位,所以上面的例子都以byte类型来举例的,主要是少画点0和1....(int为4个字节,就是32位,我看毕老师视频的时候看他画0和1就有点晕,太多了),第一次在本坛发帖,有错误的地方希望大家指正,再次感谢!


作者: 杨闯    时间: 2013-4-5 02:07
不太会排版,见谅哈{:soso_e127:}发完睡觉咯{:soso_e147:}希望跟各位朋友能在19期中成为同学!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2