C++ ~十六进制数之前的符号

C++ ~十六进制数之前的符号,c++,c,symbols,C++,C,Symbols,我正在检查一段很久以前写的代码 我不知道十六进制数之前的~符号是什么意思 就像: a = b & ~0xff; 代码的其他部分如下所示,没有~符号: a = (b & 0xff00) >> 8; ~运算符是按位NOT,它反转二进制数的位。~是一元运算符,类似于-或。你为什么否决这个问题?这是一个绝对有效的问题,即使是低niveau。不是我-但OP可以很容易地查找运算符参考指南。@FUZxxl:可能是因为查看任何教程、书籍或参考资料都会回答这个问题,这意味着“没有显

我正在检查一段很久以前写的代码

我不知道十六进制数之前的~符号是什么意思

就像:

a = b & ~0xff;
代码的其他部分如下所示,没有~符号:

a = (b & 0xff00) >> 8;

~
运算符是按位NOT,它反转二进制数的位。

~
是一元运算符,类似于
-
。你为什么否决这个问题?这是一个绝对有效的问题,即使是低niveau。不是我-但OP可以很容易地查找运算符参考指南。@FUZxxl:可能是因为查看任何教程、书籍或参考资料都会回答这个问题,这意味着“没有显示任何研究工作”?可能重复说明:如果操作数是
char
short
等,它被提升为
int/unsigned
,然后位被翻转。@chux所有操作都是这样。请注意,升级总是转到有符号整数,从不转到无符号整数。@fuzzxl“升级总是转到有符号整数,从不转到无符号整数”并非如此。“如果
int
可以表示原始类型的所有值(受宽度限制,对于位字段),则该值将转换为
int
;否则,它将转换为
无符号int
”C11dr§6.3.1.12这只会发生在非常奇特的体系结构上,但您是对的。