C语言 十六进制语法符号



当我输入一个十六进制字节时:

0 x10

相同吗?

~ 0 x10

有什么区别?

~0x10给出0x10的位不,即0xEF

0x10作为二进制是00010000。按位计算,可以得到十六进制的11101111 - 0xEF

如果将0x10赋值给一个大于1字节的类型,则对其位进行反转会将其最低有效位设置为0xEF,其他位设置为0xFF

~是一元位补码运算符。您可以在C规范的6.5.3.3中阅读有关它的所有内容,但简而言之,它是一元的,因为它只在一个操作数上工作;它会翻转比特。此外,它对操作数执行整数提升。

在你的例子中,操作数的值是1016,也就是000100002。因为它只有8位,所以你可能在char类型中使用它。使用~运算符(结合整数提升)将得到111111111111101111 2(位被翻转)。

最新更新