c中的组合位和逻辑运算符

标签 c binary bit-manipulation bit logical-operators

我对其中一些操作感到困惑(组合按位和逻辑操作)。

如果 x = 0x3F 且 y = 0x75,找到 diff c 表达式的字节值:

1) x&y
2) x | y
3) ~x | ~y
4) x & ~y
5) x && y
6) x || y
7) !x || !y
8) x && ~y

尝试

首先,我将十六进制转换为二进制:

x = 00111111
y = 01110101

这是我的尝试

1) 00110101
2) 01111111
3) 01111111
4) x & not y?  isn't the bang operator a logical operator?  what is the bit representation of !y?
5) x && y = TRUE = but how is that represented as a byte? 11111111?
6) x || y = how can this be represented as a byte?
7) !x || y = ???
8) x && ~y = ?????

最佳答案

逻辑非运算符 ! 将“真”值变为“假”,反之亦然。由于任何非零值都被视为“真”,因此运算符简单地为任何非零值返回零。

这导致 x & !y 为零,因为用零屏蔽任何内容都是零。

“true”和“false”的逻辑值分别指定为10。这意味着逻辑运算符(即 &&|| 或一元 !)的结果始终为 10

如果结合上面的两个语句,您就会明白为什么使用双逻辑非 (!!)(您可能在某处看到过)总是返回 01

关于c中的组合位和逻辑运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19045184/

相关文章:

c - 如何使用 STM32 HAL I2C 从 PCT2075 获取温度

java - 关于有符号字节的二进制转换为十六进制的问题

c++ - 如何在 C++ 中访问 .HGT SRTM 文件?

java - image.getRGB(x,y) 的二进制 AND (&) 运算;

c++ - 解释以下C++代码部分

c - 尝试使用指针转置 C 中的矩阵

objective-c - 将 C/C++ 文件添加到 Xcode4 iOS 项目

使用递归函数反转字符串的概念

c - 我怎样才能屏蔽位?

c++ - 位操作,置换位