Solaris 动态跟踪指南

按位运算符

D 提供了以下二元运算符用于处理整数操作数中的各个位。这些运算符都与在 ANSI-C 中具有相同的含义。

表 2–9 D 按位运算符

&

按位 AND 

|

按位 OR 

^

按位 XOR 

<<

将左边的操作数向左移动右边的操作数指定的位数 

>>

将左边的操作数向右移动右边的操作数指定的位数 

二元 & 运算符用于从整数操作数中清除位。二元 | 运算符用于在整数操作数中设置位。二元 ^ 运算符在只设置了相应操作数位之一的每个位的位置返回 1。

移位运算符用于在指定的整数操作数中向左或向右移位。向左移位将使用零填充结果右边空位的位置。使用无符号整数操作数向右移位将使用零填充结果左边空位的位置。使用带符号的整数操作数向右移位将使用符号位的值填充左边空位的位置,也称为算术移位操作。

用负位数将整数值移位,或者移位的位数大于左边操作数本身的位数,将产生未定义的结果。如果在编译 D 程序时,编译器可以检测到此条件,则 D 编译器将产生错误消息。

除了二元逻辑运算符,一元 ~ 运算符也可用于对单个操作数执行按位否定:它将操作数中的每个“零”位转换为“一”位,并将操作数中的每个“一”位转换为“零”位。