![]() |
位运算符和位运算(uncompleted)
位运算符和位运算
1. 位(逻辑)运算符 1.1“与AND”运算符& 1.1.1 运算规则 参加运算的两个数据,按二进制位进行“与”运算,如果两个相应的位都为1,则该位的结果值为1,否则为0,即:
0 & 0 = 0, 0 & 1 = 0, 1 & 0 = 0, 1 & 1 = 1. 1.1.2 用途 (1) 清零
(2) 取特定位
(3) 保留特定位
1.2“或OR”运算符 | 1.2.1 运算规则 参加运算的两个数据,按二进制位进行“或”运算,如果两个相应的位都为0,则该位的结果值为0,否则为1,即: 0 | 0 = 0, 0 | 1 = 1, 1 | 0 = 1, 1 | 1 = 1。 1.2.2 用途 1.3“取反NOT”运算符~ (!) 1.3.1 运算规则 ~是一个单目运算符,用来对一个二进制数按位取反,即将0变1,1变0。
1.3.2 用途 1.4“异或XOR”运算^ 1.4.1 运算规则 两者相等为0,不等为1. 1 ^ 1 = 0 0 ^ 0 = 0 1 ^ 0 = 1 0 ^ 1 = 1 1.4.2 用途 1.4.2.1 交换两个整数,可以不用第三个参数 如a =11, b = 9.以下是二进制运算过程: a = a ^ b = 1011 ^ 1001 = 0010; b = b ^ a = 1001 ^ 0010 = 1011; a = a ^ b = 0010 ^ 1011 = 1001; 交换:a = 9, b = 13 (注:仅限于整数) 1.4.2.2 翻转特定位 如:将数100001的第2位和第3位翻转,可以与100110进行异或运算。 100001 ^ 000110 = 100111 1.4.2.3 清0(汇编语言) XOR a, a 2. 位移运算符 用于移位运算 2.1 左移运算符 << 2.1.1 运算规则 左移若干位,右补0,高位左移后溢出且舍弃。 注:对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。 2.1.2 用途 左移一位相当于乘以2 2.2 右移运算符 >> 2.2.1 运算规则 右移若干位,移到右端的低位被舍弃。 对无符号数,高位补0。 对有符号数,左边移入0(“逻辑右移”)或1(“算术右移”)。 2.2.2 用途 右移一位相当于除以2 |
所有的时间均为北京时间。 现在的时间是 05:52 AM. |