java中的位运算符
来源:互联网 发布:知聊可以提现吗 编辑:程序博客网 时间:2024/05/19 06:18
位运算符
java支持的支持的位运算符有如下的七个:(1) & 按位与。当两位相同时返回为1。(2) | 按位或。只要有一位为1即可返回1.(3) ~ 按位非。单目运算符,将操作数的每一位(包括符号位)全部取反。(4) ^ 按位异或。当两位相同时返回0,不同则返回1。(5) << 左移运算符。(6) >> 右移运算符。(7) >>> 无符号右移运算符。注意:一般来说位运算符只能操作整数类型的变量或值。运算法则如下:
1. &、|、^ 的运算
第一个操作数
第二个操作数
按位与
按位或
按位异或
0
0
0
0
0
0
1
0
1
1
1
0
0
1
1
1
1
1
1
0
System.out.println(5&9);//将输出1System.out.println(5|9);//将输出1300000101 00000101
& 00001001 | 00001001
---------------- -----------------
00000001 00001101& 00001001 | 00001001---------------- -----------------00000001 000011015的补码: 000000000000000000000000000001019的补码: 000000000000000000000000000010015^9的值; 00000000000000000000000000001100
2. ~的运算:按位非只需要一个操作数,这个运算符将把操作数在计算机底层的二进制码按位(包括符号位)取反。如下代码测试:
System.out.println(~-5);
System.out.println(5^9);-5的原码: 10000000000000000000000000000101
-5的补码: 11111111111111111111111111111011
~-5的值: 00000000000000000000000000000100
3. 左移运算符:将操作数的二进制代码整体左移指定的位数,右边空出来的用0补充。
System.out.println(-5<<2);//输出-20-5的补码 11111111111111111111111111111011
左移后 1111111111111111111111111111101100
4. java的右移运算符有两个:>>和>>>,对于>>运算符而言,把第一个操作数的二进制码右移指定位数后,左边空出来的位以原来的符号位来填充,即正数补0,负数补1。>>>则无论正负都补0。
-5的补码
11111111111111111111111111111011
右移(<<)后 1111111111111111111111111111111011
右移(<<<)后 0011111111111111111111111111111011
进行移位运算还要遵循以下的规则:
1.对于低于int类型(如byte,short和char)的操作数总是先自动转换为int后再移位。
2.对于int类型的整数移位a>>b,当b>32时,系统先用b对32取余(int有32位),得到的余数才是真正的移位位数。eg:a>>33和a>>1的效果一样的。
- Java 中的位运算符
- JAVA中的位运算符
- Java中的位运算符
- java中的位运算符
- java中的位运算符
- Java中的位运算符
- java中的位运算符
- Java中的位运算符
- java中的位运算符
- Java中的位运算符、移位运算
- Java中的位运算符、移位运算
- Java 中的位运算
- JAVA 中的位运算
- Java 中的位运算
- java中的位运算
- Java 中的位运算
- Java 中的位运算
- JAVA中的位运算
- 新建地图下载任务的六种方式
- R语言 使用sparklyr包连接spark,遇到的问题及解决
- 数日子
- VC2010中自定义消息
- 关于职业
- java中的位运算符
- 关于maven中版本控制问题
- Marriage Match IV HDU3461 网络流+最短路spfa
- 定时自动执行Sqoop及Hive命令
- 【解决思路记录】mac chrome跨域问题
- jqprint打印boostrap table时table内容不显示为打印内容
- 带有粒子效果的熊熊大火
- [bzoj1861][Zjoi2006]Book书架 splay
- Unity3d烘焙Lightmap调节Shadow方法