Java位运算符介绍
2015-12-09 11:06
609 查看
位运算符
位运算符主要是针对二进制的,它包括了”&“(按位与)、”|“(按位或)、”~“(按位非)、”^“(按位异或)四种。& 按位与
两个二进制按位比对,若同位上都是1,才返回1,否则返回0,最后返回新的二进制。以1(0001)和3(0011)为例,返回的结果是1(0001)。示例如下:System.out.println(1 & 3); // 1
| 按位或
两个二进制按位比对,若同位上都是0,才返回0,否则返回1,最后返回新的二进制。以1(0001)和3(0011)为例,返回的结果是3(0011)。示例如下:System.out.println(1 | 3); // 3
~ 按位非
一个二进制进行取反,若位上为1,则返回0,否则返回1,最后返回新的二级制。以3(0011)为例,返回的结果是-4(1100)。示例如下:System.out.println(~3); // -4
^ 按位异或
两个二进制按位比对,若同位上都是相同的数字(0或1),才返回0,否则返回1,最后返回新的二进制,以1(0001)和3(0011)为例,返回的结果是2(0010)。示例如下:System.out.println(1 ^ 3); // 2
二进制除了位运算符还有移位运算符。
移位运算符
移位运算符包括了”<<“(左移)、”>>“(带符号的右移)、”>>>“(无符号的右移)。在移位运算时,byte、short和char类型移位后的结果会变成int类型,对byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移位long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。<< 左移运算符
按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。以3(0000 0011)为例,左移2位,返回的结果为(12)0000 1100。示例:System.out.println(3 << 2); // 12
System.out.println(3 << 34); // 12
>> 带符号的右移
按二进制形式把所有的数字向左移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。以3(0000 0011)为例,带符号右移1位,返回的结果为(1)0000 0001。示例:System.out.println(3 >> 1); // 1
System.out.println(3 >> 33); // 1
System.out.println(Integer.toBinaryString(-3)); // 11111111111111111111111111111101
System.out.println(Integer.toBinaryString(-3 >> 1)); // 11111111111111111111111111111110
System.out.println(-3 >> 1); // -2
System.out.println(-3 >> 34); // -1
>>> 无符号的右移
按二进制形式把所有的数字向左移动对应的位数,低位移出(舍弃),高位的空位补零。以3(0000 0011)为例,带符号右移1位,返回的结果为(1)0000 0001。示例:
System.out.println(3 >>> 1); // 1
System.out.println(3 >>> 34); // 0
System.out.println(Integer.toBinaryString(-3>>>1)); // 01111111111111111111111111111110
System.out.println(-3 >>> 1); // 2147483646
System.out.println(-3 >>> 34); // 1073741823
相关文章推荐
- Struts2运行流程
- 解决Java程序使用MySQL时返回参数为乱码的示例教程
- Calendar java日历
- 基于spring的简单SSO单点登录
- 【eclipse】新建的android工程提示Call requires API level 11 (current min is 8)
- springmvc无法跳转到指定页面的问题
- java 线程死锁
- spring MVC配置详解
- spring mvc注解
- 关于java的Exception的getMessage()是否为null的问题
- 下一代Eclipse 步入云端
- JAVA学习笔记2---static、new、final以及java引用的实质
- [持续更新]Eclipse工具的各宗疑难杂症
- Single Number leetcode java
- 表单提交数据量大于2m,java 后台接受不到表单传递过来的数据
- [置顶] 20151209struts简单传值
- JAVA中常见的几种RuntimeException
- eclipse jni opencv 报错: unresolved inclusion <string>
- Java将图片压缩为原来的一半
- Java 文件输入、复制