按位操作函数
可能重复:
你如何设置,清除并切换C中的一个位?
我正在为即将到来的决赛进行学习,我想验证学习指南中的一些问题。
一些背景:
Set()
函数将一个字节的位设置为1
Unset()
函数将一个字节中的某个位设置为0
Flip()
函数将该位“翻转”到与原来相反的位置
所以我们班的一些孩子自己回答了学习指导的问题,但我已经发现了一些错误,这些答案听起来很腥。 这就是他所说的:
Set使用哪个操作? 或运营商|
Unset使用哪种操作? 异或操作员^完成两次
Flip使用哪种操作? 异或运算符^
这些是我在上面描述的函数中实现的正确的按位运算符吗?
设置使用或
取消使用和
翻转使用Xor
这已经在这里得到了回答:你如何设置,清除并切换一个位?
你是对的第一个,但对于Unset()
你应该使用&
与0
在该位
00000000 |
00000001 =
--------------
00000001 // Sets
00000001 &
00000000 =
--------------
00000000 // Unsets
00000001 ^
00000001 =
--------------
00000000 // Flips
如果bit
是要在字节中处理的位:
x |= (1 << bit); // Sets
x &= ~(1 << bit); // Unsets 00000001 becomes 11111110.
x ^= (1 << bit); // Flips
链接地址: http://www.djcxy.com/p/28795.html
上一篇: Bitwise Manipulation Functions
下一篇: th bit to zero?