Java中的这几个位运算符有大神讲解一下不?最好举生活中的例子,谢谢!

 我来答
百毒千毒
2017-09-23 · TA获得超过4737个赞
知道大有可为答主
回答量:2504
采纳率:88%
帮助的人:660万
展开全部
/**
我通俗点说:在位运算里面,其实大多数都是进行二进制运算的,也就是0和1,之间的运算!

以下例子里面:0代表假,1代表真;

按位与:&  

真与真=真;(1&1=1)

假与假=假;(0&0=0)

真与假=假;(1&0=0)

假与真=假 ;(0&1=0)

总结(在按位与里面,逢假(0)必假(0));

-----------------------------------------------------------------
按位或:|  

真与真=真;(1|1=1)

假与假=假;(0|0=0)

真与假=假;(1|0=1)

假与真=假 ;(0|1=1)

总结(在按位或里面,逢真(1)必真(1));

-----------------------------------------------------------------
按位异或:^ 

真与真=真;(1^1=0)

假与假=假;(0^0=0)

真与假=假;(1^0=1)

假与真=假;(0^1=1)

总结(在按位或里面,相同就(0)不同则(1));

----------------------------------------------------------------
按位非~

这个我思前想后了很久,我觉得我不好更通俗的讲解;
(请原谅,我尽可能的保持通俗)
我要是跟你讲这个,你需要了解一点基本知识,才比较好理解一点!

你了解这个:(源码--反码---补码),我比较好讲一点!

a:所有字面值常量(你暂时理解基本数字):他们在内存里面存储的时候,都是以二进制的补码形式存在的!

b:不管正数还是负数,在内存里面存储都是补码!

c:不同点就是:正数的源码,反码,补码,都一样!

d:负数则不一样,一个负数的补码,是该正数的源码--->逐位取反--->然后末尾+1--->得到的就是该负数在内存里面存储的形式(补码)!

e:正数的最高位,即(最左边第一位是0,其他位有效值位),负数的最高位,即(最左边第一位是1,其他位是有效数值位!)

好了,基本知识我说完了,不好意思我只有这能力了,能不能看懂完全看造化了!

--->>进入主题:

按位非,是一元运算符:

它的作用是一把个数字的补码,逐位取反,得到另外一个数字的补码!这个我觉得需要举例比较容易理解一点:

例子:假如(非5:~5),因为5是正数,所以5的二进制在内存里面形式都一样,举短一点的吧,byte类型,8位!

0 0 0 0 0 1 0 1<<---5的二进制;

1 1 1 1 1 0 1 0<<---按位非~,0变1,1变0(变完以后,这个是另外一个数字的补码,因为是负数,我们不好看,但是我们可以还原他的正数,就知道该数是几了!)

0 0 0 0 0 1 0 0<<---按照上面d步骤逆向过来,末尾-1--->>逐位取反--->>得到该数正数的原码!

所以你看这个数字有效位是4;所以,上面的那个负数补码就是-4,总结( ~5 = -4 );

我天,我都尽可能说详细了...还是觉得怕你看不明白!

--------------------------------------------------------------------------------

左移:<<(理解是乘法,2的n次幂,2是底数!)--->>低位补零

5<<2=20   等价 5x(2x2)=20
6<<3=48   等价 6x(2x2x2)=48
4<<4=64   等价 4x(2x2x2x2)=64

右移:>>(理解是除法,倍率同上)---->>如果是正数,在高位补零,如果是负数,则在高位补1
8>>2=2    等价  8÷(2x2)=2;
16>>3=2   等价  16÷(2x2x2)=2;
-16>>3=-2 等价  -16÷(2x2x2)=-2;

无符号右移>>>(和右移是一回事,区别在后面)--->不管正负数:高位都是补0;

16>>3=2   等价  16÷(2x2x2)=2;
-16>>3=-2 等价  16÷(2x2x2)=2;

(不管正负还是负数,结果都是正数,懂了?这就是无符号右移的区别!)

-------------------------------------------------------------------------------

这些知识都是非常基础的知识,很关键,也很重要,如果我说的你看不懂,也没关系,你可以跳过这一步,向后面学习

学一段时间后,在回头看看..会恍然大悟的!!

不好意思解答能力有限:不足之处还请路人..指点!!
*/
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式