Javase学习10-位运算符
Posted TSCCG
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javase学习10-位运算符相关的知识,希望对你有一定的参考价值。
位运算符本质都是针对二进制数0和1进行运算的,在使用位运算符时,会先将操作数转换成二进制进行位运算,再将结果转换成想要的进制数。1表示true,0表示false
一、位运算符分类
运算符 | 运算 | 例子 | 运算过程 |
---|---|---|---|
& | 位与 | a & b | a和b每一位进行"与"操作,相同的为1,不同的为0 |
| | 位或 | a | b | a和b每一位进行"与"操作,只有a与b之间有一个1就为1 |
~ | 位取反 | ~a | 将a每一位进行"非"操作,所有位数字取反 |
^ | 位异或 | a ^ b | a和b每一位进行"异或"操作,相同的为0,不同的为1 |
<< | 左移 | a << b | 将a左移b位,右边空位用0填充 |
>> | 右移 | a >> b | 将a右移b位,丢弃被移出位,左边最高位为1空位就填充1,为0就填充0 |
>>> | 无符号右移 | a >>> b | 将a右移b位,丢弃被移出位,左边空位用0填充 |
1. &:位与
将a和b的每一位都进行“与”操作,相同的为1,不同的为0
byte a = 2; byte b = 3; /** * a转换成二进制:00000010 2 * b转换成二进制:00000011 3 * ---------------------------- * 位与运算结果: 00000010 2 */ System.out.println(a & b);
2. |:位或
byte a = 2; byte b = 3; /** * a转换成二进制: 00000010 2 * b转换成二进制: 00000011 3 * ---------------------------- * 按位或运算结果: 00000011 3 */ System.out.println(a | b);
将a每一位进行"非"操作,所有位数字取反
byte a = 2; /** * a转换成二进制: 00000010 2 * ---------------------------- * 按位取反运算结果: 11111101(补码) -3 */ System.out.println(~ a);
4. ^:位异或
byte a = 2; byte b = 3; /** * a转换成二进制: 00000010 2 * b转换成二进制: 00000011 3 * ---------------------------- * 按位异或运算结果: 00000001 1 */ System.out.println(a ^ b);
5. <<:左移
byte a = 2; byte b = 3; /** * a转换成二进制: 00000010 2 * ---------------------------- * a左移3位后运算结果: 00010000 16 */ System.out.println(a << b);
将a右移b位,丢弃被移出位,左边最高位为1空位就填充1,为0就填充0
byte a = 98; /** * a转换成二进制: 01100010 98 * ---------------------------- * a右移2位后运算结果: 00011000 24 */ System.out.println(a >> 2); byte b = -30; /** * b转换成二进制: 11100010(补码) -30 * ---------------------------- * b右移2位后运算结果: 11111000 -8 */ System.out.println(b >> 2);
7. >>>:无符号右移
byte a = 98; /** * a转换成二进制: 01100010 98 * ---------------------------- * a右移2位后运算结果: 00011000 24 */ System.out.println(a >>> 2); byte b = -30; /** * b转换成二进制: 11100010(补码) -30 * ---------------------------- * b右移2位后运算结果: 00111000 56 */ System.out.println(b >>> 2);
以上是关于Javase学习10-位运算符的主要内容,如果未能解决你的问题,请参考以下文章