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这只会发生在非常奇特的体系结构上,但您是对的。