在Java中有7个位运算符:
分别是按位与 &:两位都为1,结果为1,否则为0。 按位或 | :两位有一个为1,结果为1,否则为0。 按位异或 ^ : 两位一个为0,一个为1,结果为1,否则为0。 按位取反 ~ :0 -> 1 ,1 -> 0。 例如: 2 & 3 = , ~-2= , ~2= , 2|3= , 2^3= 2 & 3 = 解析: 1. 先得到2的补码=〉2的原码00000000 00000000 00000000 00000010 2的补码=> 00000000 00000000 00000000 00000010 2. 3的原码=> 00000000 00000000 00000000 00000011 3的补码=> 00000000 00000000 00000000 00000011 3.按位& 00000000 00000000 00000000 00000010 00000000 00000000 00000000 00000011 00000000 00000000 00000000 00000010 & 运算后的补码 运算后的原码也是00000000 00000000 00000000 00000010 结果就是2 ~-2= 推导 1.先得到-2的原码 10000000 00000000 00000000 00000010 2.-2的反码 11111111 11111111 11111111 11111101 3.-2的补码 11111111 11111111 11111111 11111110 4.~-2操作 00000000 00000000 00000000 00000001运算后的补码 5.运算后的原码就是00000000 00000000 00000000 00000001 =>1 ~2= 推导 1.得到2的补码 00000000 00000000 00000000 00000010 2.~2操作 11111111 11111111 11111111 11111101 运算后的补码 3.运算后的反码 11111111 11111111 11111111 11111100 4.运算后的原码 10000000 00000000 00000000 00000011 => -3
>>、<<、>>>运算规则:
1) 算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位。 2) 算术左移 <<: 符号位不变,低位补 0。 3) >>> 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0。 4) 特别说明:没有 <<< 符号。 案例: int a=1>>2; //1 => 00000001 => 00000000 本质 1 / 2 / 2 = 0 int c=1<<2; //1 => 00000001 => 00000100 本质 1 * 2 * 2 = 4
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。