負數二進位制表示

2021-09-01 08:06:38 字數 1154 閱讀 7503

負數在計算機中用補碼表示。這是教科書上到表示,由於時間久遠,又由於上課沒好好學,以至於補碼是啥,在心中沒留下任何到痕跡,補習一下。

原碼:整數在記憶體中用原碼表示,即按絕對值大小轉換成二進位制

如: [b]00000101[/b]是[b]5[/b]到二進位制表示

反碼:將二進位制數按位取反,所得的新二進位制數稱為原二進位制數的反碼

如:[b]00000101[/b]按位取反,得[b]11111010[/b]

補碼:反碼+1

如:[b]11111010+1[/b]得[b]11111011[/b],16進製表示位0xfb

二進位制轉換為10進製

int converse(string str)

}return result;

}

cout << converse("0101") << endl;

cout << converse("1101") << endl;

輸出結果為:513

上面到函式只能按原碼轉換,即只能轉換非負數。

int converse2(string str)

}} else

for(i = 0; i < str.length() - 1; i++)

}result--;

result = ~result;

result &= mask;

result *= -1;

}return result;

}

cout << converse2("0101") << endl;

cout << converse2("1101") << endl;

cout << converse2("1111") << endl;

cout << converse2("1111111111111011");

cout << converse2("1111111111111111");

輸出結果為:5-3

-1-5

-1注:實際上整形的數是32位的,在32位的情況下[b]1101[/b]也是正數

負數的二進位制表示

原碼 反碼 補碼 反碼 1 負數的二進位制表示法 比如,假設有一 int 型別的數,值為5,那麼,我們知道它在計算機中表示為 00000000 00000000 00000000 00000101 5轉換成二制是101,不過int型別的數占用4位元組 32位 所以前面填了一堆0。現在想知道,5在計算...

負數的二進位制表示

原碼 正數原碼就是其二進位制。負數的原碼就是其二進位制,並將最高位作為符號位設為1。eg 1 原碼為 1000 0001複數進行運算時用補碼表示負數補碼 負數原碼不考慮最高符號位的原碼的反碼 1 eg 1 的補碼為 1111 1110 反碼 1 1111 1111 在二進位製碼中,為了區分正負數,採...

負數的二進位制表示

為毛 x x 1 其中x為一任意int型正整數,左式表示取x的相反數後的二進位制形式,右式表示先將x的二進位制按位取反後再加一得到的二進位制形式。左右兩個二進位制相同 假設有乙個 int 型別的數,值為5,那麼,我們知道它在計算機中表示為 00000000 00000000 00000000 000...