跳到主要内容

位运算

假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A =   0011 1100
B = 0000 1101
A&B = 0000 1100 //竖着看 有0就是0,全1才是1

A = 0011 1100
B = 0000 1101
A|B = 0011 1101 //竖着看 有1就是1,全0才是0

A = 0011 1100
B = 0000 1101
A^B = 0011 0001 //竖着看 不同为1,相同为0

A = 0011 1100
~A = 1100 0011
运算符描述实例
&按位与操作,按二进制位进行"与"运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;(A & B) 将得到 12,即为 0000 1100
|按位或运算符,按二进制位进行"或"运算。运算规则:`00=0; 0
^异或运算符,按二进制位进行"异或"运算。运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;(A ^ B) 将得到 49,即为 0011 0001
~取反运算符,按二进制位进行"取反"运算。运算规则:~1=-2; ~0=-1;(~A ) 将得到 -61,即为 1100 0011,一个有符号二进制数的补码形式。
<<二进制左移运算符。将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。A << 2 将得到 240,即为 1111 0000
>>二进制右移运算符。将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。A >> 2 将得到 15,即为 0000 1111