位操作
位操作是程序设计当中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。
位运算符
辑取反(NOT)
取反是一元运算符, 对一个二进制数的每一位执行逻辑反操作. 使数字1成为0, 0成为1. 例如:
NOT 0111 (十进制 7)
= 1000 (十进制 8)
许多程序设计语言(包括C程序设计语言 family), 取反操作符用波浪线"~"表示. 值得注意的是此操作符与"逻辑非(!)" 操作符不同. 在C++中,逻辑非将数字整体看做一个布尔类型-- 将真值转化为假, 将假值转化为真; 而C语言将值1转化为0, 将非零值转化为0. "逻辑非"并不是一个位操作.
按位或(OR)
按位或处理两个长度相同的二进制数, 两个相应的二进位中只要有一个为1,该位的结果值为1。如:
0101 (十进制 5)
OR 0011 (十进制 3)
= 0111 (十进制 7)