Java中的与、或、异或、非、移位运算符等

一、’与‘,’位与‘(&)
按 ’与‘ 位运算,表示两个数的二进制数,相同位数都是1,则该位是1,否则位是0
例:
5&4
5的二进制是:0000 0000 0000 0101
4的二进制是:0000 0000 0000 0100
按’与‘运算为:0000 0000 0000 0100
最后为4

二、按’或‘,’位或‘(|)
按’或‘位运算,表示两个数的二进制数,相同位数有一个是1,则该位是1,否则位是0
例:
5|4
5的二进制是:0000 0000 0000 0101
4的二进制是:0000 0000 0000 0100
按’或‘运算为:0000 0000 0000 0101
最后为5

三、按’异或‘,’位异或‘(^)
按’或‘位运算,表示两个数的二进制数,相同位数只有一个是1,则该位是1,否则位是0
例:
5|4
5的二进制是:0000 0000 0000 0101
4的二进制是:0000 0000 0000 0100
按’非‘运算为:0000 0000 0000 0001
最后为1

四、按’非‘,’位非‘(^)也称为取反运算符
按位“非”操作符,属于一元操作符,只对一个操作数进行操作,(其他按位操作符是二元操作符)。按位“非”生成与输入位相反的值,——若输入0,则输出1,若输入1,则输出0。
例:
~5
5的二进制是 0000 0000 0000 0101
则~5是 1111 1111 1111 1010 转为十进制是 -6。

在计算机中只认识0和1,那么计算机怎么看待正负数呢?
二进制的正负是从高位看,最高位如果1则是负数,如果是0则是正数。
如果负数单纯是把最高位变为1的话,在运算中会出现不是我们想要的值,所以引入了:原码,反码,补码。正数的原码,反码,补码都一样,负数的反码是对除了符号位(最高位)对原码取反,补码是对反码+1
负数的二进制转化,计算机计算是用的补码

1、首先取出这个数的原码的二进制,

2、然后再求出反码

3、最后求出补码
本段来自:https://blog.csdn.net/mxiaoyem/article/details/78569782

五、移位运算符(本段来自:https://blog.csdn.net/mxiaoyem/article/details/78569782)
移位操作符操作的运算对象也是二进制的“位”。移位操作符只可用来处理整数类型,左移位操作符(<<)能按照操作符右侧指定的位数将操作符左边的操作数向左移动(在低位补0),“有符号”右移位操作符(>>)则按照操作符右侧指定的位数将操作符左边的操作数向右移。“有符号”右移位操作符使用“符号扩展”;若符号位正,则在高位插入0;若符号位负。则在高位插入1。java中增加了一种“无符号”右移位操作符(>>>),他使用“零扩展”;无论正负,都在高位插入0。这一操作符是C或C++中所没有的。
例:
5<<2 等于20
5的二进制是 0000 0000 0000 0101
左移两位 0000 0000 0001 0100
例:
5>>2 等于 1
5的二进制是 0000 0000 0000 0101
右移两位 0000 0000 0000 0001
例:
5>>2 等于 -2
-5的二进制是 1111 1111 1111 1011
右移两位 1111 1111 1111 1110 转十进制,例5反着来,先-1,然后取反
在这里插入图片描述
本图片来自:https://blog.csdn.net/zzti_erlie/article/details/80204053

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值