負數在計算機中用補碼表示。這是教科書上到表示,由於時間久遠,又由於上課沒好好學,以至於補碼是啥,在心中沒留下任何到痕跡,補習一下。
原碼:整數在記憶體中用原碼表示,即按絕對值大小轉換成二進位制
如: [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...