当我输入一个字节为十六进制时:
0x10的
是否与以下相同:
〜0x10的
有什么区别?
答案 0 :(得分:7)
~0x10
为您提供的不是0x10
,即0xEF
0x10
二进制文件为00010000
。如果不是这样,就会给你11101111
- 0xEF
十六进制
如果您将0x10
分配给大于一个字节的类型,则反转其位会将其最低有效字节设置为0xEF
,将其他字节设置为0xFF
。
答案 1 :(得分:0)
~
是unary bitwise complement运营商。您可以在C规范的6.5.3.3中阅读所有相关内容,但简而言之,它是一元的,因为它适用于一个操作数;而它将翻转位。另外,它对操作数执行整数提升。
因此,在您的情况下,操作数的值为10 16 ,即00010000 2 。因为它只有8位,所以你可能在char
类型中拥有它。使用~
运算符(结合整数提升)将导致1111111111101111 2 (位被翻转)。