0
我與一些二進制數字打交道,試圖來連接數字。在這種情況下,我會得到我想要的東西:串聯一個負數二進制數
num = 0;
num = (num<<3)|4;
num = (num<<9)|7;
這將設置NUM到100000000111,或者0x0807如果我格式化爲4個十六進制數字。
但是,如果我嘗試連接一個負數:
num = 0;
num = (num<<3)|4;
num = (num<<9)|-7;
我得到0xFFF9,當我想要得到0x09F9。右邊的9位似乎是正確的,但似乎左邊的一些位正在翻轉。我猜測,當我執行邏輯或否定時,符號位被移動到最左邊的位或某物。有什麼辦法可以防止這種情況發生?
而且,我知道,在我的例子,我可以只設置NUM無需換擋次數,但在我實際的程序,這些都是變數,我只是硬編碼到展示的數字。
爲什麼要使用負數來執行此操作? –
我們這裏有什麼是XY的失敗。 –