ble*_*150 0 c bitwise-operators bitwise-and
当我尝试运行以下代码时,它显示“ FALSE”而不是“ TRUE”。有人可以解释为什么代码返回false吗?
#include <stdio.h>
int main(void)
{
if(-8 & 7)
{
printf("TRUE");
}
else
{
printf("FALSE");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
-8可以通过以下方式表示(我将使用字节表示形式
8 = 00001000
~8 = 11110111
-8 = 11111000 (~8 + 1)
Run Code Online (Sandbox Code Playgroud)
即-8在二补码表示中等于tp~8 + 1
所以-8等于11111000和7等于00000111
11111000
&
00000111
========
00000000
Run Code Online (Sandbox Code Playgroud)
二进制AND运算会得出错误的结果。
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |