乙個有關原碼 反碼 補碼的小問題

2022-09-04 13:54:17 字數 433 閱讀 4574

int x = 1 , y = ~x ; 求y的值。

我開始算出結果為e,不過這個結果是錯的。

思路:因為計算機是以二進位制的補碼的形式來儲存,所以我們要將 ~1 轉換成補碼,又因為補碼是在反碼的基礎上轉換而來,而反碼又是原碼轉換來的,所以得將 ~1 裝換成原碼。

以下是正確演算法:

∵ 1 = [原] 00000001;

∴ ~1 = [原] 11111110;  //先將1取反 , 然後再轉換成原碼

∴ [原] 11111110 = [反] 10000001;  //將轉換後的原碼再轉換成反碼

∴ [反] 10000001 = [補] 10000010;  //因為反碼為負數,所以轉換補碼需要加一

∴ [補] 10000010 = -2;  //補碼最後的結果為-2

如果這裡面有什麼不對的,或是有遺漏的,望大家勿噴。

原碼,反碼和補碼的一些小問題

為什麼補碼等於反碼加一?為什麼補碼中有符號位,只能表示最大正數補碼 127,卻能表示最大正數 128呢?計算機中怎麼對待符號位的?二 反碼 2.數學定義 3.意義 4.注意點 1.計算機中無反碼。三 補碼 四 計算機中對數的儲存於處理 原碼 true form 是一種計算機中對數字的二進位制定點表示...

一 原碼反碼補碼的相互轉換

1 首先,正數的原碼,反碼,補碼相同。我們在這裡不討論。2 我們來討論負數的原碼反碼補碼的相互轉換。負數原碼轉化為反碼 符號位不變,數值位按位取反。原碼 1100 0010 反碼 1011 1101負數反碼轉化成原碼 符號位不變,數值位按位取反。反碼 1011 1101 原碼 1100 0010負數...

乙個小問題

error c2679 binary no operator defined which takes a right hand operand of type class smanip int or there is no acceptable conversion 除錯了好久,就是找不出問題在哪。...