繁体   English   中英

〜(uint32_t)是什么意思?

[英]What does ~(uint32_t) mean?

我在OS内核中读到了一些C代码

x & ~(uint32_t)CST_IEc;

~()是什么意思? 这是一个代字号,后面是括号!

~()实际上是两件事:

  1. (uint32_t)是演员。
  2. ~是一个按位补码运算符。

还有一些用于清除评估顺序的parantheses:

(x & (~((uint32_t)CST_IEc)))

首先将CST_IEc转换为uint32_t然后在用x通过&进行按位求解之前用~按位取反。

您正在错误地解释运算符优先级。 演员(uint32_t)CST_IEc完成(uint32_t)CST_IEc然后发生~ 查看运算符优先级图表以获取帮助。

  • (uint32_t)位是对无符号int(32位)类型的强制转换,
  • ~表示按位不(或补码),因此它在CST_IEcuint32_t CST_IEc的位反转。
(uint32_t)CST_IEc; //casting CST_IEc to uint32_t

~( ) //taking one's complement

您需要略微区别地阅读表达式:

(uint32_t)CST_IEc

这会将值CST_IEc转换为32位无符号整数。

~(uint32_t)CST_IEc;

~然后对值进行逐位反转; 每一位变为零,每个零位变为一位。

整个表达式然后:

x & ~(uint32_t)CST_IEc;

这意味着结果包含x中的位,除了CST_IEc的值所隐含的位; 那些都归零了。

所以,如果CST_IEc为例如起见,0x0F00,和的输入值x是0×12345678,则结果将是0x12345078。

是不是(uint32_t)类型演员?

〜是按位不是

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM