黑马程序员技术交流社区
标题:
关于二进制的一些总结
[打印本页]
作者:
杨闯
时间:
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