-1
我正在學習有關C. 這裏屏蔽技術是一個實踐問題,我的工作: 需要找到0×87654321的補充,同時留下至少顯著字節完整應該是這樣的0x789ABC21如何使用按位C操作找到0x87654321的補碼?
唯一的面具我現在熟悉的是使用0x& 0xFF來除去最後一個字節。我不知道使用哪個按位運算符來獲得十六進制數的補碼。我如何解決這個問題?
我的書沒有解釋一個十六進制數的補碼是什麼,但我GOOGLE了,發現確定一個補碼的捷徑方法是採取15 - hexDigit =補充請糾正我,如果我錯了。
'0x87654321U^0xFFFFFF00U' – Kaz
爲什麼會產生補碼? – ixbo45
因爲XOR是布爾「不等於」函數。當我們對一個布爾值1 /真(X XOR True)XOR某個值X時,我們說「X不等於真」,這與「X不是真」是相同的,而不是X是補充。 C ^運算符在操作數的所有相應位上並行應用布爾XOR函數。所以我們可以使用0xFFFFFF00這樣的* mask *來選擇我們想要補充的位。與0異或不做任何事; X XOR 0是X.異或與1翻轉1到0和0到1 .. – Kaz