簡體   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