逐位运算
补码
补充变量值,表达值包含1,可变值包含0,表达值包含0,可变值包含1。
b = ~n; |
示例:
char a='a',b;
|
右移
运算符x向右移动到数字y代表二进制代码。如果移动的值是无符号类型,进行逻辑右移,即左侧将被零填满。
如果移动的值是符号类型,进行算术右移,即左侧将被符号填满(如果数字是正值,符号为零值;如果数字为负值,符号值为1)。
x = x >> y; |
示例:
char a='a',b='b';
|
左移
运算符x向左移动到数字y代表二进制代码,即右侧将被零填满。
x = x << y; |
示例:
char a='a',b='b';
|
不建议移动大的数字或者与移动变量长度相等的数字,因为运算结果无法确定。
位逻辑运算符 AND
二进制的x和y代表位逻辑运算符AND。在所有数组中x和y的值都不含有零表达式的值包含1(TRUE);在所有其他数字中包含 0 (FALSE) 。
b = ((x & y) != 0); |
示例:
char a='a',b='b';
|
位逻辑运算符OR
二进制的x和y代表位逻辑运算符OR。在所有数字中x和y的值都不等于零表达值包含1 并且在所有其他数字中包含0。
b = x | y; |
示例:
char a='a',b='b';
|
位逻辑运算符Exclusive
二进制的x 和y代表位逻辑运算符EXCLUSIVE (eXclusive OR)。在所有数字中x和y的值都不同于二进制值表达值包含1并且在所有其他数字中包含0 。
b = x ^ y; |
示例:
char a='a', b='b';
|
位逻辑运算符只作用于integers。
另见