Java位运算符 博客分类: Java随笔 java
程序员文章站
2024-02-12 08:27:52
...
处理整型类型(byte, short, int, long)时,可用位运算符对整型数值的各个位进行操作。看看以下的位运算符:
1. &("and") 与运算
具体运算逻辑如下:只有两个操作数对应的位都为1的时候,&运算结果才为1,否则为0.
a 0b1000
b 0b1011
-----------
c 0b1000
2. |("or") 或运算
具体运算逻辑如下:只要两个操作数对应的位有一个为1,|运算结果就为1,否则为0.
a 0b1000
b 0b1011
-----------
c 0b1011
3. ^("xor") 异或运算
具体运算逻辑如下:只要两个操作数对应的位相同,^运算结果就为0,否则为1.
a 0b1000
b 0b1011
-----------
c 0b0011
4. ~("not") 非运算
具体运算逻辑如下: ~运算规则是按位取反,此时为补码.需转化为原码,即先按位取反,符号位除外,然后末位+1.
0b0000 1000先按位取反,得到如下.
0b1111 0111此时为补码.需转化为原码.
0b1000 1000先按位取反,符号位除外.
0b1000 1001末位加1.即-9.
1. &("and") 与运算
int a = 0b1000; //0b1000是8的二进制表示 int b = 0b1011; //0b1011是11的二进制表示 int c = a & b; //对a和b做与位运算 System.out.println(c);//得到结果c为8,即0b1000
具体运算逻辑如下:只有两个操作数对应的位都为1的时候,&运算结果才为1,否则为0.
a 0b1000
b 0b1011
-----------
c 0b1000
2. |("or") 或运算
int a = 0b1000; //0b1000是8的二进制表示 int b = 0b1011; //0b1011是11的二进制表示 int c = a | b; //对a和b做或位运算 System.out.println(c);//得到结果c为11,即0b1011
具体运算逻辑如下:只要两个操作数对应的位有一个为1,|运算结果就为1,否则为0.
a 0b1000
b 0b1011
-----------
c 0b1011
3. ^("xor") 异或运算
int a = 0b1000; //0b1000是8的二进制表示 int b = 0b1011; //0b1011是11的二进制表示 int c = a ^ b; //对a和b做异或位运算 System.out.println(c);//得到结果c为3,即0b0011
具体运算逻辑如下:只要两个操作数对应的位相同,^运算结果就为0,否则为1.
a 0b1000
b 0b1011
-----------
c 0b0011
4. ~("not") 非运算
int a = 0b1000; //0b0000 1000是8的二进制表示 int c = ~a; //对a做非位运算 System.out.println(c);//得到结果c为-9,即0b1000 1001
具体运算逻辑如下: ~运算规则是按位取反,此时为补码.需转化为原码,即先按位取反,符号位除外,然后末位+1.
0b0000 1000先按位取反,得到如下.
0b1111 0111此时为补码.需转化为原码.
0b1000 1000先按位取反,符号位除外.
0b1000 1001末位加1.即-9.
上一篇: 路由器简单配置
推荐阅读
-
Java位运算符 博客分类: Java随笔 java
-
《深入分析Java Web技术内幕》读书笔记 博客分类: 技术总结研究报告 《深入分析Java Web技术内幕》读书笔记
-
JNDI解释 博客分类: Java基础 DataSourceJNDI
-
tomcat中获取不同的数据源java代码 博客分类: java,tomcat,数据源 tomcatjavadatasource数据源
-
java调用msn、qq 及.exe程序总结 博客分类: 文档Java qqjava
-
Eclipse+Maven创建webapp项目 博客分类: JAVA java
-
如何在eclipse中修改jsp默认编码 博客分类: JAVA工具 eclipse
-
The specified JRE installation does not exist 博客分类: JAVA
-
eclipse编码格式设置教程、如何为eclipse设置编码格式? 博客分类: JAVA工具 java
-
java的svn的使用 博客分类: JAVA javasvn