黑马程序员技术交流社区

标题: java位运算 [打印本页]

作者: zhuhongbo    时间: 2016-6-24 09:39
标题: java位运算
基础测评的时候位运算会考吗,感觉好难,什么源码,反码,补码,尤其是负数的补码让人搞蒙了,有没有谁详细的说一下,
作者: 郎行天下    时间: 2016-6-24 10:56
这个要求是了解,不会考的
作者: life写实    时间: 2016-6-25 11:33
我是看视频学的,简单的归纳了下,希望可以帮到你,可能有漏洞哦,可以边看教学视频边看我的小总结。
我举例的数据算的也是~4,也就是4的反码,过程中也有负数的原码反码补码变换。
按位与&有0则0
按位或|有1则1
按位异或^不同则1,相同则0
按位取反~所有的0变1,,1变0
编译过程中int类型的十进制数据首先要转化成2进制数据参与运算。

按位取反,符号位和数值位都会改变,而按位与,按位或,按位异或则符号位不
变,只变数值位

正数的原码反码补码一致
负数的原码和反码符号位都是1,其他位置相反,0变1,1变0,
补码等于反码+1.
求一下b的反(~b)
int b = 4;    4的2进制就是100
转化成计算机识别的二进制:
         00000000 00000000 00000000 00000100
取反:  11111111 11111111 11111111 11111011 得到的这个是取反之后的原

码,接下来求它的补码。它的第一位是1,所以这是个负数。         
         11111111 11111111 11111111 11111011 先已知原码求反码
反码:   10000000 00000000 00000000 00000100 再已知反码求补码
补码:   10000000 00000000 00000000 00000101 得到的这个补码就是计算机

输出的数据。也就是2进制数据负的101也就等于-5
         
作者: 涟漪不起    时间: 2016-6-25 12:30
多看看视频。知道怎么回事就好,以后用得少。




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