Bitwise Operations
位运算
补码转换
将变量值转换为补码。当变量值为0时,表达式中的所有位都包含1;当变量值为1时,所有位都包含0。
b = ~n;示例:
char a='a',b;
b=~a;
Print("a = ",a, " b = ",b);
// The result will be:
// a = 97 b = -98
右移
x的二进制表示向右移位y位。如果要移位的数值是无符号类型,则进行逻辑右移,即左侧的空位将被填充为零。
如果要移位的数值是符号类型,则进行算术右移,即左侧的空位将填充符号位的值(如果数为正,符号位的值为0;如果数为负,符号位的值为1)。
x = x >> y;示例:
char a='a',b='b';
Print("Before: a = ",a, " b = ",b);
//--- shift to the right
b=a>>1;
Print("After: a = ",a, " b = ",b);
// The result will be:
// Before: a = 97 b = 98
// After: a = 97 b = 48
左移
x的二进制表示向左移位y位,右侧的空位将被填充为零。
x = x << y;示例:
char a='a',b='b';
Print("Before: a = ",a, " b = ",b);
//--- shift to the left
b=a<<1;
Print("After: a = ",a, " b = ",b);
// The result will be:
// Before: a = 97 b = 98
// After: a = 97 b = -62
不建议将位数大于或等于要移位的变量的长度,因为这样的操作结果是不确定的。
位与运算
x和y的二进制编码表示之间的位与运算。当x和y都非零时,表达式中的所有位都包含1(TRUE),其他所有位都包含0(FALSE)。
b = ((x & y) != 0);示例:
char a='a',b='b';
//--- AND operation
char c=a&b;
Print("a = ",a," b = ",b);
Print("a & b = ",c);
// The result will be:
// a = 97 b = 98
// a & b = 96
位或运算
x和y的二进制表示之间的位或运算。当x或y不包含0时,表达式中的所有位都包含1,其他所有位都包含0。
b = x | y;示例:
char a='a',b='b';
//--- OR operation
char c=a|b;
Print("a = ",a," b = ",b);
Print("a | b = ",c);
// The result will be:
// a = 97 b = 98
// a | b = 99
位异或运算
x和y的二进制表示之间的位异或运算。当x和y的二进制值不同时,表达式中的所有位都包含1,其他所有位都包含0。
b = x ^ y;示例:
char a='a', b='b';
//--- Excluding OR operation
char c=a^b;
Print("a = ",a," b = ",b);
Print("a ^ b = ",c);
// The result will be:
// a = 97 b = 98
// a ^ b = 3
位运算仅适用于整数。
另请参阅
最后更新于