1、原碼表示法
具體定義還分小數和整數:
①小數原碼的定義
[x] =
x,( 0≤x <1 )
1- x ,(-1 < x ≤ 0)
例如: x=+0.1011 , [x]原= 0.1011
x=-0.1011 [x]原= 1.1011
②整數原碼的定義
[x]原 =
x ,(0≤x <2(n-1))
2(n-1)-x ,(- 2(n-1) < x ≤ 0)
x為正整數時,[x]原=x;
x為負整數時,[x]原=2的n次方-x;
x為負小數時,[x]原=1-x;
2、補碼表示法
模:模是指乙個計量器的容量。一般用m表示。是產生「溢位」的量值。
同餘:同餘是指兩個整數a和b除以同乙個整數m,如果所得的餘數相同,則稱a和b對m同餘,即a和b 在以m為模時是相等的,記作:a=b(mod m)
補碼的作用:使乙個負數能用其補碼代替,可以得到同樣的運算結果。
定義:任意乙個x的補碼可以用該數加上其模m來表示。
[x]補=
x,0<=x補=
x,0<=x<2n,(mod 2n+1)
2n+1+x=2n+1-|x|,-2n+1
<=x<0,(mod 2n+1)
由原碼求補碼:
a.除符號位外其餘按位取反,末位加1(只對負數有效)
b.除符號位外,其餘各位按位取反,從最低位開始遇到的第乙個1以前的各位保持不變。
由補碼求其他:
a.由[x]補求[-x]補:連符號位一起按位取反,末位加1
b.由[x]補求[x/2]補:將[x]補的符號位和數值位一起向右移動一次,符號位移走後保持原來的值不變。
為什麼原碼有兩個0,而補碼只有乙個0?
從接觸到的知識來看,這只是乙個編碼規定。所謂的編碼,就是人為的用數字來按一定的規則,編一定的資料。
為什麼補碼的表示範圍比和原碼的不同?
這是因為補碼只有乙個0,因此補碼的範圍就是在原碼的基礎上加上了乙個數,這個數就是用原碼中的乙個用來表示0的數來表示的。小數中加入的數是-1,整數中加入的資料時-2n。(原碼和補碼表示的是一些數的集合,它們之前都是離散的)
原碼和補碼
1 1 正數3碼合一 原碼0000 0001 1000 0001 最高位0表示正數,1表示負數。原碼計算得原碼 反碼0000 0001 1111 1110 除最高位之外取反,反碼計算得反碼 補碼0000 0001 1111 1111 反碼 1,符號位不變,符號位只在兩個補碼運算時改變,補碼計算得補碼...
原碼和補碼
我不想介紹什麼原碼和補碼的概念,只是為了自己重拾程式設計的一點小積累。原碼 原碼表示法在數值前面增加了一位符號位 即最高位為符號位 正數該位為0,負數該位為1 0有兩種表示 0和 0 其餘位表示數值的大小。正數的原碼為其本身,負數的原碼是取絕對值後將最高位變1 如何計算補碼呢?正數的補碼為其本身 負...
原碼 補碼 反碼總結
前一段時間在做模型外殼提取程式時候,用到了補碼的知識,現在系統的總結下原碼 補碼 反碼的知識。你可能注意到了我寫的順序是補碼在反碼前面,是的,補碼不是必須依賴於反碼才能得知的,但本文為了方便講解和容易理解仍然採用了先反碼再補碼的順序。本文以1個位元組的儲存空間為例進行講解。原碼比較簡單,最高位為符號...