理解原碼 反碼和補碼 帶例子詳解

2021-08-08 02:02:33 字數 775 閱讀 6943

**對於正數原碼和補碼是一樣的;

對於負數,先對其數字部分(-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的機...

原碼,反碼,補碼,詳解

本篇文章講解了計算機的原碼,反碼和補碼.並且進行了深入探求了為何要使用反碼和補碼,以及更進一步的論證了為何可以用反碼,補碼的加法計算原碼的減法.論證部分如有不對的地方請各位牛人幫忙指正 希望本文對大家學習計算機基礎有所幫助 一.機器數和真值 在學習原碼,反碼和補碼之前,需要先了解機器數和真值的概念....