補數 補碼的意義

2021-07-22 06:05:35 字數 1699 閱讀 5410

前言

之前在大學的數字電子技術這門課程學到這個概念,但一直沒有應用過,最多就是做過課後作業。本人目前做的是工控行業,工控就離不開電機的控制,工控行業裡常見的三種控制方案,一是plc,二是運動控制卡,三是微控制器,我做的是的微控制器這一塊,眾所周知定時器是微控制器的基礎外設,而行業內對使用微控制器對電機進行控制,往往用的是定時器。使用定時器對電機控制的方式有溢位中斷的方式,還有就是比較中斷的方式,這裡使用的是比較中斷的方式,又因為電機的加減速表是用軟體自動生成的,生成的表為公升序表,公升序表很顯然不能用比較中斷的方式進行控制,否則電機得運動就變成先減速後勻速然後又加速,顯然不是我們需要的,我們需要的電機運動過程是先加速後勻速最後減速這麼乙個過程。如果我們能把公升序表變成降序表,問題不就解決了嗎?對,沒錯。那有什麼方法呢?我們分析了一下電機的運動過程,如果能按照逆方向執行,那就是我們想要的了,於是想起了鐘錶的執行,當前指標指向6點鐘方向,要指向3點鐘方向,我們可以順時針轉過9格,也可以逆時針轉過3格,這也是補碼的乙個典型特點,於是就聯想到了補碼。通過補碼我們就可以把整數把大化小,把小化大,這樣就能把公升序表變成降序表了,於是問題就迎刃而解了。下面我們來講下關於補數的基本知識。

補數是一種處理有符號數的方法,用於變換數字的符號。常在電腦科學中應用,被稱為【補碼】,在台灣和香港被稱作二補數。

關於補碼

補數在計算機中被成為補碼(在港台被稱為二補數)

有符號的二進位制數的補碼運算方法為:

正數:補碼為其本身

負數:除符號位外,所有位取反(即原碼的反碼),然後+1(簡稱為求反加一)。

如:-1101 的補碼為

1. -1101的原碼為 11101(第一位為符號位)

-1101的反碼為 10010(第一位為符號位)

-1101的補碼為 10011(第一位為符號位)

整數的補碼定義

[x]補=和{ 2^(n+1)+x|(0>x>=-2^n)(mod 2^(n+1))

電腦科學中的應用

電腦科學中,補數的最大應用點為,在處理加法和減法中,不會因為數字的正負使用不同的計算方式。只要一種加法電路就可以處理各種有符號數加法,而且減法可以用乙個數加上另乙個數的補數來表示,因此只要有加法電路及補數電路即可完成各種有符號數的加法及減法,電路設計上相當方便。

補數的概念

在日常生活中,常常會遇到補數的概念,例如時鐘指示為六點,想要它指向三點,可以按順時針方向將分針轉九圈,也可以逆時針方向轉三圈,結果是一致的。由於時針轉一圈為12小時,而其中12在時鐘裡是不被顯示而自動丟失的,即15-12=3,15點和三點在時鐘表示上是一致的。想想一下,在時鐘這個問題上,任何時候時針向順時針轉九圈和逆時針轉三圈的效果都是一致的,我們將方向定位正負,即-3與+9等價。而數學上稱12為模寫作(mod 12),而稱+9是-3以12為模的補數記為

-3  +9(mod 12)

-4  +8(mod 12)

-5  +7(mod 12)

【以上擷取自《計算機組成原理·第二版》唐朔飛著p221】

可以將模理解為乙個足夠大的正數,足夠大到比你運算所有數字的絕對值都要大。

結論:(在模確定的情況下)

乙個負數可用它的正補數來代替,而這個正補數可以用模加上負數本身來得到。

乙個正數和乙個負數互為補數時,兩數的絕對值之和為模

正數的補數為其自身。

補碼的意義

數值有正負之分,計算機就用乙個數的最高位存放符號 0為正,1為負 這就是機器數的原碼了.假設機器能處理的位數為8.即字長為1byte,原碼能表示數值的範圍為 127 0 0 127 共256個.有了數值的表示方法就可以對數進行算術運算.但是很快就發現用帶符號位的原碼進行乘除運算時結果正確,而在加減運...

深入解析補碼的意義

相信大家看到這個標題都不屑一顧,因為在任何一本計算機基礎知識書的第一章都有他們的解釋,但是在書上我們只能找到一些簡單的定義,沒次看過之後不久就忘了。最近論壇裡有人問起這些概念,看到很多人的回覆是以前看過現在忘了去看看某某書之類,很少有給出乙個合理的解釋。於是本人就開始思考 雖然上帝會發笑,我還是要思...

補碼的意義及Verilog中的補碼定點小數計算

目錄 1.原碼,反碼,補碼 2.補碼的意義 3.verilog中的補碼運算與定點小數 3.1補碼定點小數的加減運算 3.2補碼定點小數的乘除運算 3.3對運算的結果近似擷取一定位寬 3.4實際應用中的例子 原碼 n位的二進位制數,最高位為符號位,正數為0,負數為1。剩下的n 1位表示該數的絕對值 反...