概述
按位异或运算(^)
对应位上的数据不同返回1,相同返回0.
public 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补最低位)。
public 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的值。
public class Hello
{
public static void main(String [] args)
{
int num1=2;
System.out.println(num1<<3);//16
}
}
带符号右移(>>)
符号位不改变,最高位填充移位后左侧的空位(符号位填充)。
不带符号右移(>>>)
低位溢出,高位补0,符号位变为0
最后
以上就是舒心银耳汤为你收集整理的按位异或运算和按位左移和按位右移正数和负数按位异或运算的结果按位左移(<<)面试题:的全部内容,希望文章能够帮你解决按位异或运算和按位左移和按位右移正数和负数按位异或运算的结果按位左移(<<)面试题:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复