按位异或运算(^)
对应位上的数据不同返回1,相同返回0.
复制代码
1
2
3
4
5
6
7
8
9public class Hello { public static void main(String [] args) { int num1=12;//1100 int num2=11;//1011 System.out.println(num1^num2);//0111 } }
正数和负数按位异或运算的结果
1和0最后返回1,最终结果为负数。
按位左移(<<)
二进制位上的数据同意向左移动指定的位数,右边空出的位置以0补齐(丢弃最高位,0补最低位)。
复制代码
1
2
3
4
5
6
7
8public class Hello { public static void main(String [] args) { int num1=12; //0000000000001100 System.out.println(num1<<1);//0000000000011000 } }
输出24
按位左移把所有数字向左移动对应位数,符号位不变,低位空位补0.
左移的运算数是byte和short类型时,将自动扩大为int类型。
当超过int类型的最大范围,则原来的符号位被截断丢弃,使用左移后的最高位作为新的符号位。
面试题:
请使用最有效的方式计算出2*8的值。
复制代码
1
2
3
4
5
6
7
8public class Hello { public static void main(String [] args) { int num1=2; System.out.println(num1<<3);//16 } }
带符号右移(>>)
符号位不改变,最高位填充移位后左侧的空位(符号位填充)。
不带符号右移(>>>)
低位溢出,高位补0,符号位变为0
最后
以上就是舒心银耳汤最近收集整理的关于按位异或运算和按位左移和按位右移正数和负数按位异或运算的结果按位左移(<<)面试题:的全部内容,更多相关按位异或运算和按位左移和按位右移正数和负数按位异或运算内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复