c - 位操作的困难

时间:2010-05-04 07:14:59

标签: c gdb bitwise-operators

我正在使用GDB调试程序。

unsigned int example = ~0;

给了我:

(gdb) x/4bt example
0xffd99788:     10101000        10010111        11011001        11111111

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

example>>=(31);

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

(gdb) x/4bt example
0xffffffff:     Cannot access memory at address 0xffffffff

发生了什么事?

3 个答案:

答案 0 :(得分:8)

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

(gdb) x/4bt &example

答案 1 :(得分:5)

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

x/4bt &example

或只是

print /x example

答案 2 :(得分:0)

我没有检查gdb命令格式,但查看最后一条语句,您似乎想要查看example中存储的地址而不是打印example ......似乎exampleall 1s0xffffffff)并且当您收到错误时,您正试图在内存中查看该位置。