ps:精華全部在開頭部分,下面為細節部分
//以 -5 舉例
運算過程:原碼->反碼->補碼->移碼
反碼 :在原碼的基礎上,符號位不動,其他位取反 任何正數的原始碼=反碼=補碼,而負數都是通過補碼表示的。
補碼 :在反碼的基礎上,運算+1 任何正數的原始碼=反碼=補碼,而負數都是通過補碼表示的。
公式:兩數補碼的和==兩數和的補碼。
移碼 :在補碼的基礎上,符號位取反
一、原碼
1、什麼叫原碼
原碼(true form)是一種計算機中對數字的二進位制定點表示方法(也叫符號——絕對值碼)。
2、原碼的表示
最高位(符號位)0表示正,1表示負(從右到左)
中間不夠的用0補齊
(補多少具體看有多少個位元組大小,乙個位元組8位二進位制)
其餘部分的是該數絕對值的二進位制位數
例如:-5用原碼表示為1 000 0101//這樣寫只是便於理解
8用原碼表示為0 000 1000
3、原碼特點
二、反碼
1、什麼是反碼
反碼是數值儲存的一種(反碼運算不便,也沒有在計算機應用)
2、反碼的表示
正數的反碼是其本身
負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反.
例如:[-5] = [1 000 0101] 原 =[1 111 1010] 反
[8] = [0 000 1000]原 = [0 000 1000]反
三、補碼
1、什麼是補碼
在反碼基礎上加一
補碼是為了讓機器學會減法運算(
所有的處理器是電路做的,電路其實只是加法器,只能做加法。如何能讓電腦做減法呢,就用補碼。減去乙個數就等於加上她的補碼。於是減法就轉換為機器能執行的加法了,於是電腦就能算減法了)
2、補碼的表示
除符號位以外,各位取反,末位加一
例如:[-5] = [1 000 0101] 原 =[1 111 1010] 反 = [1 111 10 11]補
[8] = [0 000 1000]原 = [0 000 1000]反 =[0 000 1000]補
十進位制求二進位制
正整數
除二取餘,直至商為0,餘數倒數排序
負整數
先求與該數對應正整數的補碼,所有位取反,末位加一
(位數不夠時左邊補1)
補多少得看資料型別,例如
int型別佔4個位元組,乙個位元組需要8個二進位制表示,一共就是需要32位來表示
二進位制轉十進位制
如果首位是二進位制是0,表示是正整數,按照普通方法來求
如果首位是1,表明是負整數
所有位取反,末位加一,所得數字就是這個負數的絕對值
位數不夠左邊補1
四、移碼
1、什麼是移碼
在原有的補碼的基礎上符號位取反(又叫增碼或偏置碼)
移碼表示數值平移n位,n為移碼量;
移碼主要用於浮點數的階碼的儲存;
2、移碼表示
例如:[-5] = [1 000 0101] 原 =[1 111 1010] 反 = [1 111 10 11]補 = [0 111 10 11]移
[8] = [0 000 1000]原 = [0 000 1000]反 =[0 000 1000]補 = [1 000 1000]移
原碼,補碼,反碼,移碼
為什麼有這些碼 定義機器字長為n,若數值x是純整數 若數值x是純小數,對純小數的原碼計算是先將其轉換為二進位制 必須的 例 若機器字長為8,則 1 原 0 0000001 1 原 1 0000001 7 原 0 0000111 127 0 1111111 127 原 1 1111111 7 原 1 ...
原碼,反碼,補碼,移碼
移碼 又叫增碼 是符號位取反的補碼,先將符號位取反,再取補碼,意思就是正數只將 變為1,負數將 變為0,再取補 x 1011 x 移 11011 符號位 1 表示正號 x 1011 x 移 00101 符號位 0 表示負號 一般用做浮點數的階碼,引入的目的是為了保證浮點數的機器零為全0。一 原碼 求...
原碼 反碼 補碼 移碼
如果機器字長為n,那麼乙個數的原碼就是用乙個n位的二進位制數,其中最高位為符號位 正數為0,負數為1。剩下的n 1位表示概數的絕對值。例如 x 101011 x 原 00101011 x 101011 x 原 10101011 位數不夠的用0補全。ps 正數的原 反 補碼都一樣 0的原碼跟反碼都有兩...