相同的二进制数位上,都是 0 的时候,结果为 0,否则为 1。
十进制 二进制
9 0000 0000 0000 0000 0000 0000 0000 1001
12 0000 0000 0000 0000 0000 0000 0000 1100
|
-----------------------------------------------------------------------------------------------
13 0000 0000 0000 0000 0000 0000 0000 1101
^:运算规则:
相同的二进制数位上,数字相同,结果为 0,不同为 1。
十进制 二进制
9 0000 0000 0000 0000 0000 0000 0000 1001
12 0000 0000 0000 0000 0000 0000 0000 1100
^
-----------------------------------------------------------------------------------------------
5 0000 0000 0000 0000 0000 0000 0000 0101
~:按位取反:
它是位运算中唯一一个单目运算,把二进制数位上的 0 变成 1,1 变成 0 的过程
十进制 二进制
9 0000 0000 0000 0000 0000 0000 0000 1001
~
-----------------------------------------------------------------------------------------------
-10 1111 1111 1111 1111 1111 1111 1111 0110
负数的二进制:是这个负数对应的正数的二进制取反+1.
-9 的二进制 应该是 正 9 取反 +1
<<:左移符号:
就是把当前这个二进制数向左移动多少位。低位空出的补零。高位移出的舍弃
9 << 2 = 36 向左移动几位 ,相当于给原数乘以 2 的多少次方
9 0000 0000 0000 0000 0000 0000 0000 1001
0000 0000 0000 0000 0000 0000 0000 100100
>>:有符号右移符号:
就是把当前这个二进制数向右移动多少位。在使用>>移动的时候,高位空出的来,需要根据原来最高位是什
么,就补什么。
9 0000 0000 0000 0000 0000 0000 0000 1001
000000 0000 0000 0000 0000 0000 0000 1001
>>>:无符号右移:
就是把当前这个二进制数向右移动多少位。在使用>>移动的时候,高位空出来的全部用零补。