2013-04-02 23 views
-3

當我鍵入一個字節爲十六進制:六角語法符號

0x10的

是不是一樣有:

〜0x10的

什麼區別?

+0

'0x10'意味着與'16'相同。 – jrok

+2

學習C的操作員如何? StackOverflow不是「閱讀我的教科書」網站。 – 2013-04-02 13:11:06

回答

7

~0x10給你的不是0x100xEF

0x10二進制是00010000按位。不是這個按位給你11101111 - 0xEF十六進制

如果分配給0x10一種類型,這是大於一個字節,反相其位將其最顯著字節爲0xEF和他人0xFF

+2

除了沒有可執行的C實現將有一個比16位窄的int,所以這會給你至少'0xFFEF'。 – 2013-04-02 13:10:33

+0

@ H2CO3你剛剛打敗了我,我已經編輯來覆蓋這一點。 – simonc

+0

我明白了,謝謝。 – 2013-04-02 13:12:20

0

~unary bitwise complement運算符。你可以閱讀C規範6.5.3.3中的所有內容,但簡而言之,它是一元的,因爲它適用於一個操作數。它會翻轉這些位。另外,它對操作數執行整數提升。

所以在你的情況下,操作數的值是10 ,它是00010000 。由於它只有8位,你可能在char類型中有這個。使用~運算符(與整數提升結合)將導致1111111111101111 (比特被翻轉)。