位运算符顾名思义,就是按照位来进行运算,在目前计算机的内部,都是以二进制方式对数据进行存贮,例如十进制4的二进制的写法则为0b100,十进制5的二进制写法为0b101,位运算的规则:
与:1与1为1,否则为0
或:0或0为0,否则为1
非:非1为0,非0为1
异或:1异或0为1,否则为0
按照与的规则,4和5与的结果为0b100,结果为十进制的4。
下述所说的整数为32位整数或64位整数。
运算符 |
运算 |
运算对象 |
结果类型 |
例子 |
.& |
位与 |
整数 |
整数 |
位与,例如3 .& 1 的结果1,3 .& 4的结果为0,在C或者类C语言中,.&的表达为& |
.| |
位或 |
整数 |
整数 |
位或,例如3 .| 1 的结果3,3 .| 4的结果为7,在C或者类C语言中,.|的表达为| |
.! |
位非(取反) |
整数 |
整数 |
位非,.! 1的结果为-2,.! 0的结果为-1,在C或者类C语言中,位非运算符为~ |
.^ |
位异或 |
整数 |
整数 |
位异或,按位异或,相同位为0,不同的位为1,如:1 .^ 1为0,1 .^ 5 的值为4,在C或者类C语言中,.^的表达为^ |
SHL |
位左移 |
整数 |
整数 |
位向左移动,最高移动的N位舍弃 |
ROL |
左循环移位 |
整数 |
整数 |
位向左移动,最高移动的N位卷滚到最低位 |
SHR |
位右移 |
整数 |
整数 |
位向右移动,最低移动的N位舍弃 |
ROR |
右循环移位 |
整数 |
整数 |
位向右移动,最低移动的N位卷滚到最高位 |