**對於正數原碼和補碼是一樣的;
對於負數,先對其數字部分(-9的數字部分就是9)原碼取反,形成反碼,然後再加一,形成補碼;
最高一位:0正1負**
例子:
(1)~9(求對9按位取反的結果)
解析:
9:0000000000000000 1001(原始碼補碼相同)
結果:1111111111111111111111 0110存的是???
負數是肯定的
設為x;
能確定的是,這個負數按位取反後加一后就是11111111111111111 0110
所以這個數是10000000000000 1010
(這時按位取反是不能動符號位的,而9取反是可以動的,因為就是在每一位取反;)
所以是-10
(2)1<<31>>31(求1左移31位,再右移31位的結果)
———>結果是-1
其中1<<31結果是-2147483648,此時就是最小負數:二進位製碼是:1000000000000000000000000
此時已經改變了數字的正負性質:此時再右移最高位仍然是1,其餘位補0,所以最後結果是10000000000000000000001—>就是-1;
注意:
1 << 31 = > -2147483648,最小負數. -(-2147483648) = 2147483647 + 1 => 最大正數 + 1 = 最小負數 = -2147483648
原碼反碼和補碼詳解
1 有符號資料表示法 在計算機內,有符號數有三種表示法 原碼,反碼,補碼,所有資料的運算都是採用內補碼進行的,在計算機操作的時候,都是採用資料對於的二進位制補碼來計算的,在記憶體中的儲存 1 原碼 就是二進位制定點表示法,即最高位為符號位,0 表示正,1 表示負,其餘位表示數值的大小 2 反碼 正數...
原碼 反碼 補碼詳解
在求解一些問題的時候,難免會涉及到補碼,特別是負數,它是以正數的補碼形式儲存在計算機中,有時候需要將補碼轉換成原碼,要是不理解其中的關係就很難下手。下面先講一下機器數和真值,首先要理解什麼是機器數,它是數字在計算機中的二進位制表示形式,而真值則是字面上理解的意思。舉個例子,當機器字長為8位時,3的機...
原碼,反碼,補碼,詳解
本篇文章講解了計算機的原碼,反碼和補碼.並且進行了深入探求了為何要使用反碼和補碼,以及更進一步的論證了為何可以用反碼,補碼的加法計算原碼的減法.論證部分如有不對的地方請各位牛人幫忙指正 希望本文對大家學習計算機基礎有所幫助 一.機器數和真值 在學習原碼,反碼和補碼之前,需要先了解機器數和真值的概念....