概述
位运算符包括位逻辑运算符、位移运算符。最近做算法的时候经常用到,现在来总结下。
重点掌握的是 左移 << ,右移 >> 。
1.位逻辑运算符
那么位逻辑运算符怎么计算的呢?先看下位逻辑运算参照表:
0代表假,1代表真。
A&B:只有A、B同时为1的时候,结果为1。A、B其中一个为0,或都为0的时候,结果为0
A|B:A、B其中一个为1,或者都为1的时候,结果为1;A、B都为0的时候,结果为0
A^B:A、B的值相同的时候,则为0,A、B值不同的时候,结果为1
~A:A、B值相同结果为1,A,B值不同结果为0
①按位与&运算:全为1,结果为1
②按位或 | 运算:A、B其中一个为1,或者都为1的时候,结果为1;A、B都为0的时候,结果为0
③异或运算:A、B的值相同的时候,则为0,A、B值不同的时候,结果为1
④取反运算:1变0,0变1
⑤位逻辑运算也可以使用逻辑运算
2.位移运算符
① << 左移
举例:
1<<1:1左移1位,将1的二进制位所有的往左移一位。
1<<2:1左移2位,将1的二进制位所有的往左移两位
a<< n,a左移n位,将a的二进制位左移n位,相当于a*(2^n),a乘2的n次方。
同样,short a = 9115,左移1位,左移2位。
采用高位溢出,低位补0的情况。
② >> 右移
举例:
32768>>1:1右移1位,将32768的二进制位所有的往左移一位。
32768>>2:1右移2位,将32768的二进制位所有的往左移两位.
a>> n,a右移n位,将a的二进制位右n位,相当于a/(2^n),a除以2的n次方。
负数的话,高位要0变1.
③ >>> 无符号右移:高位补0。byte short不适合做无符号右移。
无符号右移规则和右移运算是一样的,只是填充时不管左边的数字是正是负都用0来填充,无符号右移运算只针对负数计算。
测试:
public static void main(String[] args) {
int a = 24;
System.out.println("a右移2位:" + (a >> 2));
System.out.println("a左移2位:" + (a << 2));
System.out.println("a无符号右移:" + (a >>> 2));
}
最后
以上就是现代乐曲为你收集整理的【详解】位运算符:位逻辑运算符,位移运算符(<<左移,>>右移)1.位逻辑运算符2.位移运算符的全部内容,希望文章能够帮你解决【详解】位运算符:位逻辑运算符,位移运算符(<<左移,>>右移)1.位逻辑运算符2.位移运算符所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复