按位操作函数

可能重复:
你如何设置,清除并切换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?