c - 使用十六进制格式说明符打印按位 NOT 运算符

标签 c

如果我使用m而不是~m然后代码给出了预期的十六进制值 32,但这里给出了 ffffffdf作为输出。

编辑 我知道如何按位 ~ NOT 运算符有效。但我不明白这一点。有人可以解释一下吗......?

#include<stdio.h>

int main()
{
    unsigned int m = 32;
    printf("%x\n", ~m); //ffffffdf is printed as output

    return 0;
}

最佳答案

每个十六进制数字都是四位。由于您有 8 个十六进制数字,因此您的整数似乎是 8*4=32 位。

32 = 0000000000000000000000000000010000 的 NOT 类似于 11111111111111111111111111101111 ,即上面的十六进制数字。

关于c - 使用十六进制格式说明符打印按位 NOT 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31145010/

相关文章:

c - 在 C 中打印时有符号和无符号字符的行为

c - 如何在 shell 命令行中输入退格字符?

在 C 中复制二维数组

c - 如何用C读取主文件表(MFT)?

MPI_Gather 可以用于从使用 MPI_Send 的线程接收数据吗?

c - 正在创建文件,但未将数据推送到文件中

c - 为什么此代码中会产生 6 个 # 标记?

c++ - Dllmain 可以使用 FreeLibrary 吗?

c - 逐行阅读时用逗号分割单词。 C

Char * 共享同一内存