chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

補碼是誰發(fā)明的_補碼有什么用

倩倩 ? 來源:網絡整理 ? 2018-02-28 16:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

補碼就是正數(shù)的原碼的相反數(shù)的另一種編碼方式。它能把字長內的正數(shù),補足為全是0。

補碼的意義:

現(xiàn)實生活中,我們有加法、減法、乘法和除法,但在計算機中只有一個加法器。換句話說,加法運算在計算機中可以直接完成,減法、乘法和除法運算最終也得轉換為加法才能實現(xiàn),說到這里,可以有些初學者會想,為什么計算機中不設計一個類似于“加法器”的“減法器”或者“乘法器”的部件,主要原因是在生活中看似一些很簡單的東西要用電路來實現(xiàn)都很復雜、很困難的,再說如果用一個加法器可以實現(xiàn)其它運算,其它的“加法器”、“減法器”或者“乘法器”也就沒有必要了,這樣還能使電路的設計更簡單。好了,現(xiàn)在我簡要地說一下補碼在計算機中的意義,計算機不能直接做減法,必須把相應的減法變成加法,才能進行計算。然而我們發(fā)現(xiàn),一個數(shù)減去另外一個數(shù),與一個數(shù)加上“另外一個數(shù)的補碼”結果是一樣的。這就是補碼對于計算機的意義:將減法運算變成了加法運算。

補碼是誰發(fā)明的_補碼有什么用

補碼有什么用?

正數(shù)的補碼,就是基本身

負數(shù)的補碼,就是原碼按位取反加1

符號位,就是最高位,最左面的第一位;其它位,就是剩下的7位

由于運算器進行加法是最快的,因此,使用補碼是為了加快計算

碼”和“數(shù)”是兩個東西。

我們平時說出或寫出某“數(shù)”,一般都是在十進制下,用10個不同的“碼”(此處的“碼”還和原碼補碼反碼的概念不同)來表示。分別是0~9。超過9,也就是比最大的碼還大的數(shù),采用進位的方式來表示。于是有了“位”的概念。即個位,十位,百位等等。

表達負數(shù)的時候由于為了與算術和代數(shù)符號當中減號或作差相互兼容,就在該數(shù)前面加上減號。

這種對一個數(shù)的寫法也可以被名門為一種編碼方式。在這種編碼方式下每個數(shù)都有一定的“位數(shù)”,即“長度”。在計算機當中規(guī)定一定的位數(shù)稱作“字長”,比如4位,8位,16位,32位等等。只不過,計算機的物理存儲數(shù)據(jù)是二進制方式。我們人類目前傳統(tǒng)的還是比較喜歡用10進制方式。并且,我們人類一般不會在書寫數(shù)字的時候遇到“字長”的概念。但是在念數(shù)字和記錄數(shù)據(jù)的時候,有一點點東西跟字長相關。比如西方愛把數(shù)據(jù)分成三位一組三位一組的方式,覺得比較好記憶。比如12‘000讀成十二千,我們中國人愛以“萬”為字長,1’2000,讀作一萬二千。舉這個例子表示字長的概念不是很恰當。因為對人而言這只是一種表達習慣。但是對機器而言,“字長”則是計算的長度單位。設計計算機進行最簡單的加法運算,首先要考慮的就是加法器進行一次加法運算,位數(shù)是多長?加法器設計成多少位的加法器?等等。這就是計算機的字長。它和編碼方式一起,構成了計算機進行計算的基礎。

有了字長的概念才好說補碼。

在十進制下也有補碼的概念。插一句,談到補碼一定要先明確字長的長度。

補碼是用來表示負數(shù)的一種編碼方式。也是為了在計算機的核心加法器部分的設計避免減法操作,存儲數(shù)據(jù)的時候避免存儲負號。

舉個例子,假如我們模擬一個字長為4位的十進制計算機。(假設有某種機制,可以在1位上有10種穩(wěn)定的狀態(tài))

對兩個數(shù)進行求和運算:1234 和 -1234

如果用原碼,那么我們需要用一個1位的寄存器來存儲和表示負號。假設就在4位的最左邊的最高位前用1表示負號,0表示正號。

則,原碼表示上面兩個數(shù):

0 1234

1 1234

然后計算機做求和,做加法的過程中。計算機發(fā)現(xiàn),其中有一個數(shù)是負數(shù),于是要切換為兩個正數(shù)相減的模式來運算。這很不方便。

于是,補碼被想出來了。

-1234和正1234相加不是等于0000嗎?在4位的字長當中的數(shù),和1234相加為0000的,是不是唯一的一個數(shù)哪?很明顯8766和1234相加等于1‘0000,后4位是0000。

那么,8766就可以看著是-1234的一種編碼表示方式,被稱作“補碼”。

所以,補碼就是把數(shù)1234在一個字長內,補足為1’0000的數(shù)的編碼方式。也就是一個正數(shù)的相反數(shù),在計算機內的表達方式。

加上符號位,正數(shù)0‘1234的相反數(shù)的補碼表示就是1’8766。

十進制里,-1234的反碼就是1‘8765

所以,現(xiàn)在回到4位字長的2進制計算機里來看。補碼和反碼的構成方式是一樣的。0’0001的相反數(shù)是-1。

補碼表示1‘1111

反碼表示1’1110

補碼是誰發(fā)明的_補碼有什么用

補碼是誰發(fā)明的

誰發(fā)明的未知,但根據(jù)wikipedia上的說法,最初是馮諾依曼引入到計算機的。

很早以前,許多計算機的內部數(shù)值編碼是用的反碼,反碼這玩意有缺點: 它的值域內有-0和+0,一個數(shù)與它的補數(shù)相加為-0,這給運算帶來一些麻煩。

補碼就沒有這些問題,不但只有一個0,而且補碼的加減乘法都可以化簡為加法一種方式。 所以在計算機里補碼對簡化運算器有很大的作用。

補碼的回顧以及補碼發(fā)明的思路推演思考

補碼與求補運算的定義

N個二進制位,M=N-1

通過一種編碼映射。100.。.00 - 111.。.11 表示 (-2^M) - (-1) ; 000.。.00 - 011.。.11 表示 (0) - (2^M - 1)

對于編碼A的求補 f(A) = (2^N)- A

原碼轉化成補碼:

對于正數(shù)和零,原碼即是補碼

對于負數(shù)A,一般理解方法:

先做反碼,然后編碼意義上加1

求補運算的意義:

換言之,若要對一個數(shù)A求反,對那個數(shù)的補碼A1做一次求補運算f(A1),所求的補碼B1就是原來數(shù)A的相反數(shù)B的補碼。

這里提供原碼轉化成補碼另外一個理解方法

對于求負數(shù)A的補碼

本質上,負數(shù)A的相反數(shù)B,B是正數(shù),B的原碼B1就是B的補碼,A的補碼就是f(B1)

---

機器實現(xiàn):

x-y = x-1-y+1 = (x-1) - y + 1

在補碼的轉碼中,這里的x=2^N

這里的(x-1) - y即使對y進行反碼操作,在ALU中可以N位同時刷新

至于N位整數(shù)+1,有一定的進位延時。

---

邊界情況:

容易看到,我們對-2^N求反,仍然是-2^N

對2^N-1求反,則是-(2^N)-1

---

利用補碼這種編碼性質

f(y) = -y

x + y = x + y

x - y = x + f(y)

---

馬后炮:事后猜測補碼發(fā)明的思路, 從而看補碼的優(yōu)勢

先看正碼表示,設N=4, -1 = 1001; -2 = 1010, -1 》 -2, 但是 1001 《 1010,兩種映射的編碼的序性不一致

反碼呢,-1=1110, -2 = 1101, Ok,序性正確了,

然而,這里有一個問題,就是正數(shù)與負數(shù)之間,有一個1的縫隙。-1=1110, 1=0001,從循環(huán)編碼的角度,這兩個編碼相差3:1110-》1111-》0000-》0001。

因為正零和負零是兩個數(shù),導致兩個數(shù)系的斷裂。怎么辦?讓負數(shù)整體往正數(shù)靠攏,邁進一步(+1),負1沒有了。

這就是求補的過程了。反碼再加1。

我想,當初寫出計算機的編碼設計論文的大牛(好像是圖靈還是什么的),當然有更深的考慮。但從序性和數(shù)系聯(lián)系的角度,補碼的發(fā)明是相當合理的。而這種合理性,我個人認為,正是其優(yōu)點。

從機器實現(xiàn)的角度,并不算復雜,但相對反碼的機器實現(xiàn),還是多了+1的進位延時。

---

int與unsigned int的思考

順便,我也整理一下這里的誤區(qū)。

如果聲明變量a為int,但是卻當作unsigned int,如果正常累加超出范圍,轉化成unsigned int結果應該還是可信的。

不過算了,我們利用好轉換和保證類型的一致,這些底層的問題我們確實還是當作透明為好。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 補碼
    +關注

    關注

    0

    文章

    14

    瀏覽量

    7801
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    C語言 關于原碼補碼問題

    我想通過補碼得到原碼,但現(xiàn)在這個程序做不到,只能得到補碼,求大神指點。
    發(fā)表于 02-14 10:46

    補碼是什么 補碼和原碼的轉化

    計算機中的符號數(shù)三種表示方法,即原碼、反碼和補碼。三種表示方法均有符號位和數(shù)值位兩部分,符號位都是0表示“正”,1表示“負”,而數(shù)值
    發(fā)表于 12-11 17:45

    補碼加、減運算規(guī)則

    補碼加、減運算規(guī)則 在計算機中,通常總是補碼完成算術的加減法運算。其規(guī)則是:  [X+Y]補= [X]補 + [Y]補 ,[X-Y]
    發(fā)表于 10-13 22:46 ?1.1w次閱讀
    <b class='flag-5'>補碼</b>加、減運算規(guī)則

    定點補碼一位除法的實現(xiàn)方案

    定點補碼一位除法的實現(xiàn)方案  與補碼乘法類似,也可以補碼直接完成除法運算,即用 [X]補/[Y] 補 直接求得[X/Y]補 。補碼除法的規(guī)
    發(fā)表于 10-13 22:58 ?3838次閱讀
    定點<b class='flag-5'>補碼</b>一位除法的實現(xiàn)方案

    補碼乘法,補碼乘法計算詳細解說

    補碼乘法,補碼乘法計算詳細解說    1.補碼與真值得轉換公式    補碼乘法因符號位參與運算,可以完成補碼數(shù)的“直接”乘法,而不需要求補級
    發(fā)表于 04-13 11:05 ?3.7w次閱讀

    補碼加法,補碼加法計算原理

    補碼加法,補碼加法計算原理    負數(shù)補碼表示后,可以和正數(shù)一樣來處理。這樣,運算器里只需要一個加法器就可以了,不必為了負數(shù)的加法運算,再配一個減
    發(fā)表于 04-13 11:41 ?1.9w次閱讀

    補碼減法,補碼減法原理是什么?

    補碼減法,補碼減法原理是什么?    負數(shù)的減法運算也要設法化為加法來做,其所以使用這種方法而不使用直接減法,是因為它可以和常規(guī)的加法運算使用同一
    發(fā)表于 04-13 11:45 ?7241次閱讀

    補碼一位乘法原理詳解

    補碼一位乘法原理詳解
    發(fā)表于 04-13 14:12 ?1.7w次閱讀
    <b class='flag-5'>補碼</b>一位乘法原理詳解

    補碼解釋及運算

    補碼解釋及運算
    發(fā)表于 06-30 10:36 ?8273次閱讀

    C語言源碼補碼

    具體詳細介紹初入門C語言源碼補碼,通俗易懂,一目了然。
    發(fā)表于 11-19 15:23 ?3次下載

    計算機為什么使用補碼的形式來表示負數(shù)

    計算機三種編碼方式來表示同一個數(shù): 原碼:符號位加上真值的絕對值,第一位表示符號,其余位表示值。 反碼:正數(shù)的反碼是其本身;負數(shù)的反碼是在其原碼的基礎上,符號位不變,其余位取反
    的頭像 發(fā)表于 02-12 15:28 ?9797次閱讀

    深入探求反碼和補碼

    本篇文章講解了計算機的原碼, 反碼和補碼。 并且進行了深入探求了為何要使用反碼和補碼, 以及更進一步的論證了為何可以反碼, 補碼的加法計算原碼的減法。 論證部分如有不對的地方請各位牛
    的頭像 發(fā)表于 09-15 15:23 ?1753次閱讀

    4位補碼范圍

    4位補碼可表示的整數(shù)的數(shù)值范圍是十進制-8~7. 1000 → -8; 1001 → -7; 1010 → -6; 1011 → -5;
    發(fā)表于 06-06 09:37 ?0次下載

    計算機原碼、反碼、補碼的概念

    在計算機內部數(shù)值是以補碼的方式進行存儲的,采用補碼進行數(shù)據(jù)存儲當然其優(yōu)點,下面會一一介紹相關內容,讓各位徹底弄懂原碼、反碼、補碼的概念以及為什么采用
    的頭像 發(fā)表于 01-09 12:25 ?6228次閱讀
    計算機原碼、反碼、<b class='flag-5'>補碼</b>的概念

    二進制補碼及與原碼的互相轉換方法

    表示負數(shù)。其余位表示數(shù)值的大小。 二進制補碼?是一種用于表示符號整數(shù)的二進制編碼方式,常用于?計算機系統(tǒng)中。在補碼系統(tǒng)中,一個數(shù)字的補碼是通過對其原碼進行位取反(即一補數(shù)或反碼),然
    的頭像 發(fā)表于 09-19 22:25 ?2387次閱讀