您的位置:首页 > 其它

位运算总结

2016-02-28 20:12 225 查看

位运算总结

所有数据在计算机中都是以二进制的形式存储的,两个数值间的位运算就是对他们的二进制形式进行处理。在Java中,位运算有以下这些:

1.与运算

与运算的符号为&,两个数字进行与运算,每一位上有0就变为0,都是1则为1,例:

1 & 0 = 0; // 全部1和全部0做与运算为全部0


2.或运算

或运算的符号为|,两个数字进行或运算,每一位上有1就变为1,都是0则为0,例:

1 | 0 = 1; // 全部1和全部0做或运算为全部1


3.异或运算

异或运算的符号为^,两个数字进行异或运算,每一位上数字相同则为0,不同则为1,例:

1 ^ 0 = 1; // 全部1和全部0,每一位都不相同,故结果全为1


异或运算有一个简单的应用是交换两个变量:

int a, b;
a = a ^ b;
b = a ^ b;
a = a ^ b; // a 和 b 已完成交换


4.取反运算

取反运算的符号为~,对某个数字进行取反运算,每一位上数字0变为1,数字1变为0,例:

~0 = -1; // 全为1,即-1;


5.左移运算

左移运算的符号为<<,对某个数字进行左移运算,该数字的二进制数就整体向左移动一定位数,右边使用0来补充,例:

1 << 1 = 2;


6.带符号右移运算

带符号右移运算的符号为>>,对某个数字进行带符号右移运算,该数字的二进制数就整体向右移动一定位数,左边使用符号位(本来是0就补0;本来是1就补1)来补充,例:

2 >> 1 = 2;
-2 >> 1 = -1;


7.无符号右移运算

无符号右移运算的符号为>>>,对某个数字进行无符号右移运算,该数字的二进制数就整体向右移动一定位数,左边使用0来补充,例:

2 >>> 1 = 2;
-2 >>> 1 = 2147483647;


值的注意的是移位运算符只能处理整数运算符,对于char、byte、short类型,在进行移位之前,都将被转换成int类型,移位后的结果也是int类型;移位符号右边的操作数只截取其二进制的后5位(目的是防止因为移位操作而超出int类型的表示范围:2的5次方是32,int类型的最大范围是32位);对long类型进行移位,结果仍然是long类型,移位符号右边的操作符只截取其二进制的后6位
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: