位运算符

&:

操作的规则是:仅当两个操作数都为1时。输出结果才为1。否

则为0,示比例如以下:

   12 的二进制为 1100

  5   的二进制为 0101

则 12 & 5 的二进制为 0100,则完整的运算式为 12 & 5 = 4; 

 

|:

操作的规则是:仅当两个操作数都为0时,输出的结果才为0。

否则为1,示比例如以下:

  12 的二进制为 1100

   5   的二进制为 0101

则 12 | 5 的二进制为 1101。则完整的运算式为 12 & 5 = 13; 

^

异或运算操作的规则是:仅当两个操作数不同一时候。对应的

输出结果才为1,否则为0,示比例如以下:

  12 的二进制为 1100

  5   的二进制为 0101

则 12 | 5 的二进制为 1001。则完整的运算式为 12 & 5 = 9; 

~

'取反'运算符~的作用是将各位数字取反:全部的0置为1,1置为0,示比例如以下:

  12 的二进制为 1100

进行取反操作为 10000000 00000000 00000000 00001101

则完整的运算式为 ~12 = -13

<<:

12 的二进制为 1100

则 12 << 1 的二进制为 11000(左移1位相当于乘以2,左移n位,相当于乘以2的n次方), 则完整的运算式为 12 << 1 = 24;

>>

12 的二进制为 1100

则 12 >> 1 的二进制为 0110(右移1位相当于除以2,右移n位,相当于除以2的n次方)。 则完整的运算式为 12 >> 1 = 6;

>>>

无符号右移一位。不足的补0。 示比例如以下:

12 的二进制为 1100

则 12 >> >1 的二进制为 0110, 则完整的运算式为 12 >> 1 = 6;

 

题外话:位运算是一种基于二进制的运算,涉及到知识包含原码、反码、补码,在此做一个小小的说明,

对于原码。就是当前数字的二进制表现形式,如-1的原码是1000 0001。

对于反码,正数的反码就是本身。负数的反码是二进制保留符号位。剩余位取反,比如-1的反码是1111 1110;

对于补码,正数的反码、补码、原码都是一样的,负数的补码是在其反码的基础上+1,比如-1的补码是1111 1111。

posted on 2018-02-16 22:05  编程小菜鸟007  阅读(160)  评论(0)    收藏  举报

导航