c - c 中逻辑 NOT 运算未返回预期值?

标签 c bitwise-operators logical-operators

我尝试使用逻辑运算符在 0xAA 和 0x55 之间切换。

我知道我可以使用 c >> 1 从 0xAA 更改为 0x55,但我被要求使用逻辑运算符而不是按位运算符来执行此操作,所以我不知道是否需要使用>> 运算符...

但是我对使用 NOT 逻辑运算有点困惑。

我确信如果我说

unsigned char c = 0xAA;
unsigned char b = !c;

那么 b 就是 0x55。相反,我得到了 0 的输出。难道它不应该将每个单独的位切换到相反的位置,给我 0x55 吗?

感谢您的帮助。

最佳答案

Instead I got an output of 0.

logical operatorsboolean values 合作:truefalse

C 语言将任何非 0 的标量值处理为 true,将 0 处理为 falseLogical NOT operator (!)将任何 true 值(即不同于 0)转换为 false(即 0)。


假设您可以使用算术运算符(加法、乘法、除法),您可以计算输入数字的每一位,使用逻辑非运算符更改其值,然后将这些位组合回一个数字,该数字是输入的数字。

例如,c 的最后一位是 c % 2,如果从数字中删除该位并且将其他位移位以填充,则剩下的数字它的位置是c/2(或者您已经知道的c >> 1。)

关于c - c 中逻辑 NOT 运算未返回预期值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49454127/

相关文章:

c - 如何通过包含指向结构体指针的数组元素来访问和修改结构体内部声明的指针类型变量?

mysql - 如何在sequelize中执行位操作

c - 为什么相同的位运算会得到不同的结果?

javascript - 为什么没有<<<?

c - C语言中&和&&的区别?

C - 打开/读取垃圾箱

我们可以在链表上使用插入排序而不使用任何其他数据结构吗?

c - 内存泄漏,我似乎找不到原因

python - 逻辑或列

javascript - 逻辑运算符两侧的 if 语句中的多个条件