【发布时间】:2018-03-23 16:17:30
【问题描述】:
我正在尝试使用逻辑运算符在 0xAA 和 0x55 之间切换。
我知道我可以使用 c >> 1 从 0xAA 更改为 0x55,但是我被要求使用逻辑运算符而不是位运算符来执行此操作,所以我不知道使用 >> 运算符是否算数...
但我对使用 NOT 逻辑运算有点困惑。
我确定如果我说
unsigned char c = 0xAA;
unsigned char b = !c;
那么 b 将是 0x55。相反,我得到了 0 的输出。它不应该将每个单独的位切换到相反的位置,给我 0x55?
感谢您的帮助。
【问题讨论】:
-
您混淆了“逻辑”而不是“按位”。尝试使用
~运算符进行比较。 -
@Code-Apprentice 我也看到了。虽然我在这里有点困扰,因为 '~' 也是位运算符,而不是逻辑运算符。我是否应该假设我可以使用按位运算符?有没有办法用逻辑运算符做到这一点?
-
您所问的正是按位 ~ 运算符的设计目的。合乎逻辑!运算符的工作方式不同,因为它仅适用于布尔值,“真”或“假”,而不适用于单个位。
-
回到你的导师那里,问问他们你是哪些运营商,哪些是不被允许使用的。
-
@zwol 看起来我将不得不做那个 zwol。
标签: c bitwise-operators logical-operators