色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

二進制減法在計算機底層是如何實現的?

林玟書2年前14瀏覽0評論

想要知道計算機怎么進行數字運算,就需要了解計算機的存儲原理。

大家都知道計算機只認識0和1,但是0和1對人又不友好,怎么做到這兩者的轉換呢?計算器又是怎么對數據進行運算的呢?這就需要從計算機的存儲講起。

位和字節

位:來自英文bit,音譯為“比特”,表示二進制位。位是計算機內部數據儲存的最小單位,11010100是一個8位二進制數。

字節:來自英文Byte,音譯為“拜特”,習慣上用大寫的“B”表示。字節是計算機中數據處理的基本單位。計算機中以字節為單位存儲和解釋信息,規定一個字節由八個二進制位構成,即1個字節等于8個比特(1Byte=8bit)。八位二進制數最小為00000000,最大為11111111;通常1個字節可以存入一個ASCII碼,2個字節可以存放一個漢字國標碼。

unsignedint、signedint和unsingedchar、signedchar

一般來說char類型變量在計算機內存里占用1個字節,也就是8個比特(byte),unsinged就是無符號的意思,signed就是有符號的意思。char默認是unsinged類型

如果是unsingedchar那么最高位(最左邊)就可以用來表示數字,那么char能表示的范圍是二進制的00000000~11111111,轉換為十進制就是0~255。

如果是signedchar那么最高位(最左邊)就需要用來表示正負0為正,1為負,那么只有剩余7位能表示數字,所以能表示的范圍就是11111111~01111111,轉換位十進制就是-127~+127。還有一個10000000用它來表示-128,因為沒有負0的概念。計算機里負數都是用補碼來表示。關于補碼的概念后面會講。

unsignedint和signedint在char的基礎上理解,只不過int是四個字節,也就是4*8=32位。int默認是signed有符號位的。所以,unsignedint表示的范圍是:0~2的32次方-1。signedint表示的范圍是:-2的31次方~2的31次方-1。

原碼、反碼、補碼

要了解清楚原碼、反碼、補碼需要先了解兩個額外的概念:機器數和真值

機器數:一個數在計算機中的二進制表示形式,叫做這個數的機器數。機器數是帶符號的比如,十進制中的數+3,計算機字長為8位,轉換成二進制就是00000011。如果是-3,就是10000011。這里的00000011和10000011就是機器數。

真值:拿上面的機器數00000011(十進制+3)來講,其形式值131(又二進制轉10進制得來),但是實際我們要的是+3,所以我們需要去掉最高位符號位:00000001的真值=+0000011=+3,10000001的真值=–0000011=–3。

了解了上面兩個概念,我們就可以來看原碼、反碼、補碼了

原碼:顧名思義,原碼就是我原來要表示的值的二進制碼,所以+3/-3的原碼是需要考慮符號位的:+3的原碼是:00000011。-3的原碼是:10000011。

反碼:

正數的反碼是其本身

負數的反碼是在其原碼的基礎上,符號位不變,其余各個位取反

+3原碼是:00000011反碼是:00000011

-3原碼是:10000011反碼是:11111100

補碼:

正數的補碼就是其本身

即在反碼的基礎上+1

+3原碼是:00000011反碼是:00000011補碼是:00000011

-3原碼是:10000011反碼是:11111100補碼是:11111101

為什么要存在這么多種碼

看完上面的內容,大家一定很懵,為什么要弄這么多碼。這是因為計算機是不辨別"符號位",因為這顯然會讓計算機的基礎電路設計變得十分復雜!于是人們想出了將符號位也參與運算的方法。

計算機減法運算

我們知道,根據運算法則減去一個正數等于加上一個負數,即:1-1=1+(-1)=0,所以計算器只有加法而沒有減法,這樣計算機運算的設計就更簡單了。

在加減乘除中,正數當然很好處理,如果遇到負數就會有問題,我們來看一下-3-(-3)如果用原碼運算會怎么樣:

在計算機中只有加法,所以3-(3)=3+(-3);

00000011+10000011=10000110,我們算上符號轉為十進制是:-6;

既然原碼不行,那用反碼?好,試一下看看

00000011+11111100=111111111,我們算上符號轉為十進制是:-127;

那再試試補碼

00000011+11111101=00000000;我們算上符號轉為十進制是:0;

OK,是對的;

總結

所以計算機運算是以補碼運算的,并且計算機只有加法,兩個數相減最終會通過加法與數字本身的正負來實現