c - 按位与运算不清楚

标签 c gcc bitwise-operators bit bitwise-and

我试图理解 C 语言中的按位 AND 运算符;它一直有效,直到我在 177 前面加上 0。

我手动执行此操作是为了确保我了解编译器在做什么

#include <stdio.h>

main () {
    printf ("%d\n", 1999 & 177); 
    return 0; 
}

上面的答案是129,这也是我手工做时的答案

#include <stdio.h>

main () {
   printf ("%d\n", 1999 & 0177); 
   return 0; 
}

上面的编译器给了我答案 79,有人可以解释一下它是如何得到答案 79 的吗?

最佳答案

177 是以 10 为底(十进制)= 0xB1 = 02618

0177 是基数 8(八进制)= 12710 或 0x7F。

0x177 是以 16 为基数(十六进制)= 37510 或 05678

1999 = 0x07CF = 0000 0111 1100 1111 Binary.
0177 = 0x007F = 0000 0000 0111 1111
              & -------------------
                0000 0000 0100 1111 = 79   

关于c - 按位与运算不清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46133726/

相关文章:

c++ - C++ 中的多数函数使用 3 uint8_t

c - sdl中对象自动移动

c++ - 无法在 Ubuntu 上将共享库与 Eclipse 链接

c++ - msys2 下的 gcc 和 clang 无法解析包含绝对路径的内容

c++ - 命名空间中的内联函数在 gcc 链接期间生成重复符号

有人可以解释一下这个 bitMask 代码是如何工作的吗?

c - 替换数组中的元素

c - (2*3.14f) 的类型是什么?

c - Linux system() 返回-1, ERRNO = 10 没有子进程

用于按位存储的python库?