【问题标题】:Bitwise AND operation not clear [duplicate]按位与运算不明确[重复]
【发布时间】:2017-09-09 18:14:42
【问题描述】:

我正在尝试理解 C 中的按位与运算符;它一直有效,直到我在 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 的吗?

【问题讨论】:

  • 0177 是octal literal
  • 数字上的前缀0通常表示该数字是base-8。 0117 != 117
  • 很多重复:(
  • 抱歉没有想到,之前确实尝试过研究我的问题

标签: c gcc bitwise-operators bit bitwise-and


【解决方案1】:

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   

【讨论】:

    猜你喜欢
    • 2012-01-31
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2020-10-02
    相关资源
    最近更新 更多