java
java
& 按位与:对应位都是1才是1
I 按位或:对应位有一个1,就是1
~ 按位取反:1变0,0变1
^ 按位异或:对应位不一样才是1
<<左移(高位抛弃,低位补0)
>>高位按照符号位补齐,低位抛弃)
>>>无符号右移(忽略符号位,高位补0,低位抛弃)
00000000 00000000 00000000 00001001
/*
9
原码:00000000 00000000 00000000 00001001
-9
原码:10000000 00000000 00000000 00001001
反码:11111111 11111111 11111111 11110110
补码:11111111 11111111 11111111 11110111
7
原码:00000000 00000000 00000000 00000111
-7
原码:10000000 00000000 00000000 00000111
反码:11111111 11111111 11111111 11111000
补码:11111111 11111111 11111111 11111001
*/
public class BitOperator{
public static void main(String[] args){
System.out.println(9&7);
System.out.println(9&-7);
System.out.println(-9&-7);
System.out.println(-9|-7);
System.out.println(~-9);
System.out.println(-9^-7);
}
}
负数用补码
操作数都是负数时,
计算后需要补码求反码在求原码
位运算
& 按位与:对应为都是1才是1
| 按位或:对应位有一个1,就是1
~ 按位取反:1变0,0变1
^ 按位异或:对应位不一样才是1
<< 左移(高位抛弃,低位补0)
>> 右移 (高位按照符号位补齐,低位抛弃)
>>> 无符号右移(忽略符号位,高位补0,低位抛弃)