c - 位操作的困难

Ton*_*ark 4 c gdb bitwise-operators

我正在用GDB调试程序.

unsigned int example = ~0;
Run Code Online (Sandbox Code Playgroud)

给我:

(gdb) x/4bt example
0xffd99788:     10101000        10010111        11011001        11111111
Run Code Online (Sandbox Code Playgroud)

为什么这不是全部1?我把它定义为~0 ...然后下一行代码是:

example>>=(31);
Run Code Online (Sandbox Code Playgroud)

当我尝试检查位内存时,GDB给了我这个:

(gdb) x/4bt example
0xffffffff:     Cannot access memory at address 0xffffffff
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事???

Rau*_*ait 8

您需要在gdb语句中获取示例的地址:

(gdb) x/4bt &example
Run Code Online (Sandbox Code Playgroud)


Mar*_*ner 5

我认为该x命令检查内存,因此example将被解释为指针.尝试

x/4bt &example
Run Code Online (Sandbox Code Playgroud)

或者干脆

print /x example
Run Code Online (Sandbox Code Playgroud)