【问题标题】:~symbol before hexadecimal number~ 十六进制数字前的符号
【发布时间】:2015-02-08 23:39:16
【问题描述】:

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

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

就像:

a = b & ~0xff;

代码的其他部分如下,没有~符号:

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

【问题讨论】:

  • ~ 是一元运算符,类似于-!
  • 你为什么不赞成这个问题?这是一个绝对有效的问题,即使是低水平的。
  • 不是我 - 但 OP 可以轻松查找操作员参考指南。
  • @FUZxxl:也许是因为查看任何教程、书籍或参考资料都会回答这个问题,这意味着它“没有显示任何研究努力”?

标签: c++ c symbols


【解决方案1】:

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

【讨论】:

  • 注意:如果操作数为charshort等,则提升为int/unsigned,然后位翻转。
  • @chux 这是所有操作的情况。请注意,促销总是发给signed int,而不是unsigned int
  • @FUZxxl“促销总是针对有符号整数,从不针对无符号整数”并非如此。 “如果int 可以表示原始类型的所有值(受宽度限制,对于位域),则该值将转换为int;否则,将转换为unsigned int。” C11dr §6.3.1.1 2
  • 这只会发生在非常奇特的架构上,但你是对的。
猜你喜欢
  • 1970-01-01
  • 2011-05-15
  • 2013-04-15
  • 2013-08-05
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2018-08-04
相关资源
最近更新 更多