位运算:按位运算
按位运算
- C有这些按位运算的运算符
- & 按位的与
- | 按位的或
- ~ 按位取反
- ^ 按位的异或
- << 左移
- >> 右移
按位与 &
- 如果(x)i ==1 并且 (y)i ==1,那么(x&y)i =1
- 否则的话(x&y)i = 0
- 按位与常用于两种应用:
- 让某一位或某些位为0:x & 0xFE
- 取一个数中的一段:x & 0xFE
按位或 |
- 如果(x)i ==1 或 (y)i ==1,那么(x|y)i =1
- 否则的话(x|y)i = 0
- 按位或常用于两种应用:
- 使得一位或几个位为1:x & 0x01
- 把两个数拼起来: 0x00FF | 0xFF00
按位取反 ~
- (~x)i = 1 – (x)i
- 把1位变0,0位变1
- 想得到全部位为1的数:~0
- 7的二进制位是0111,x|7使得低3位为1,而
- x & ~7,就使得低3位为0
逻辑运算VS按位运算
- 对于逻辑运算,它只看到两个值:0 和 1
- 可以认为逻辑运算相当于把所有的非0值都变成1,然后做按位运算
- 5 & 4 ——>4 而 5 && 4 ——>1 & 1 ——>1
- 5 | 4 ——>5 而 5 || 4 ——>1 | 1 ——>1
- ~4 ——>3 而!4——>!1——>0
–
按位异或^
- 如果(x)i == (y)i,那么(x^y)i = 0
- 否则的话,(x^y)i = 1
- 如果两个位相等,那么结果为0;不相等,结果为1
- 如果x和y相等,那么x^y的结果为0
- 对一个变量用同一个值异或两次,等于什么也没做
- x^y^y ——>x
- x^y^y ——>x
版权声明:本文为匿名原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。