數據是?各種各樣的信息,如數字、文本、計算機程序、音樂、圖像、符號、運動圖像、DNA密碼,等等。
實際上,信息可以是能夠被計算機存儲和處理的任何事物。
計算機內存儲和處理信息的最小單位是位(bit,或比特)。一個比特的值可以是0或1,
它是?不可分的。
數字計算機將信息以?一組或一串比特?(稱作?字)的形式保存在存儲器中。
例如,串01011110表示一個8位的字。
計算機通過高低電壓兩個等級來存儲0和1的狀態
目前人們還不能制造出價格便宜的、能夠可靠地區分出十個不同電壓等級的電路,
只能制造出便宜的、能夠區分我們稱之為0和1的兩個電壓等級的電路。
計算機通常不會每次只對一個二進制位進行操作,它們會對一組二進制位進行操作。
一般來講,計算機能夠?同時處理的位數越多,速度就會越快。
隨著計算機的速度越來越快,價格越來越低,一臺計算機一次能處理的位的組數也越來越多。
Figure :
上圖描述了如何用1位、2位、3位和4位得到一個二進制的值序列。
一個n位的字將得到$2^n$條不同的路徑或位模式。
一個n位的字將得到$2^n$不同的位模式。
一個n位的二進制字什么也表示不了; 二進制1和0組成的串?沒有任何內在含義。
怎樣解釋一個特定的二進制數只取決于程序員賦予它何種含
按照位置記數法,一個n位的整數N的形式表示:
用小數點將整數部分和小數部分分開,可以對位置記數法進行擴展,使其能表示實數。
一個用基數b的位置記數法表示的數的值被定義為:.
在計算機主要關注下列四種數制
二進制算術運算的規則與十進制基本相同; 唯一的區別在于,十進制算術運算以10為基數,
每位有10個數字,而二進制運算以2為基數,每位只有2個數字。
Figure :
兩個位相加可能產生?進位?或?借位
二進制加法示例
二進制減法示例
二進制乘法示例
兩個n位字相乘,將產生一個2n位的積
計算機不是按照上述規則進行計算的。
表示范圍、精度、準確性和誤差
負數可以用很多種不同的方式表示,但計算機設計者選擇了3種方法
每種方法都有其各自的優點和缺點。
一個n位字可以表示從 $0~2^{n-1}$ 共 $2^n$ 個可能的值。
例如,一個8位的字可以表示 $0,1,2,\cdots,254,255$ 共256個數
如果要表示負數,一種方法是用它的?最高位表示符號。
有符號數的值為: $(-1)^S \times M$
Figure :
n位有符號的表示范圍為 $-(2^{n-1}-1)$ 至 $+(2^{n-1}-1)$。
確定是0有兩種表示方法;例如在8位有符號數中,0的表示:
$00000000=+0$ 以及 $10000000=-0$
補數概念
補數的定義: 是對于給定的進位制,相加后能使自然數a的位數增加1的最小的數
設 n 位 b 進制數 a,規定如下
在N進制下,求數a的補數的計算方式
對于N進制的自然數 $a=a_ra{r-1}a{r-2}\cdots a_1a_0$
規定 數b的各位 $b_i=(N+1)+a_i$為,稱數b為 a關于 N+1 的補數
微處理器使用二進制補碼系統表示有符號整數,因為它可以將?減法運算 轉換為對 減數的補數的加法運算。
例如:用7加上5的補數就可以完成運算7減去5。
一個數與它的補數之和是一個常數
在n位二進制算術中,數P的補數為Q且 $|P| + |Q| =2^n$
補碼: 一個n位二進制數N的補碼定義為 $2^n - N$;
當8位二進制數 $N=5=00000101$,
補碼 $[N]_補=2^8-N=100000000-00000101=11111011$
首先,對于二進制數來說,只要定好了位長,
進行反碼(1的補數)和補碼(2的補數)
其實是一件很簡單的事情。在純二進制的表示下,
只有0和1,別無他物。0111(4位)的反碼就是1000,
補碼就是1001(反碼加1)。所謂正負、符號這些人賦予的意義都不存在,
只有二進制數和這些簡單操作
在計算機中表示負數,如果用最高位表示符號這種“原碼”方式,
雖然有利于人的閱讀,但?不利于其本身的計算。
所以系統內部就?把負數統一用“其對應正數的補碼”來表示,
而正數自己不用改變。這樣變換后,正數雖然形式上沒有變,
但與原碼相比,含義卻變了,因為?符號位已經不再是符號位了,
此時的?正數和負數?都在一致的“補碼編碼空間”中。 。
由于原碼空間到補碼空間的轉化,只需要對負數進行,正數是不用
發生任何變化
正數在計算機“補碼編碼空間”中的表示和原碼一致。
但這絕?不等價于?“對正數進行補碼運算,結果是其本身”。
下面來看計算機中補碼的運算過程:首先我們將4個數 +5,
-5,+7和 -7 以補碼形式表示
下面計算 7 - 5
結果為9位二進制數100000010。如果忽略最左邊一位(也叫“進位位”),
結果為00000010 = +2,這正是我們所希望看到的結果。
下面計算5 - 7
結果為11111110(進位位為0)。我們預期的結果為-2;
即$2^8 - 2=10000000-00000010 = 11111110$ 。
再一次得到了所需要的結果。
考慮n位二進制算術運算 $Z=X-Y$,我們用X加上Y的補數來完成這一運算。
Y的補碼為 $2^n - Y$,則有 $Z=X+(2^n-Y)=2^n+(X-Y)$。
也就是說,我們得到了所需要的結果,X-Y,
以及位于最左邊的一個并不需要的進位(即 $2^n$),而這個?進位被丟棄了。
一個數連續兩次求補碼得到本身
補碼的特點
運算溢出: 5位有符號二進制補碼數的表示范圍為 -16~+15
如果兩個正數相加且結果大于15,會超出5位二進制補碼的表示范圍
如果兩個負數相加且結果小于-16,也會超出5位二進制補碼的表示范圍
先介紹?二進制補碼數的算術移位運算
人們手動計算乘法過程
數字計算機并沒有實現上面的算法,因為這種算法要求計算機存儲n個部分積,
然后將它們同時相加。
一種更好的技術是每得到一個部分積時就做一次加法。
一個計算兩個n位無符號二進制數相乘的算法。
算法示例
通過?移位和加法?實現的乘法速度很慢。實際的計算機采用了多種方法加快乘法運算的速度。
例如,構造專門的?邏輯陣列直接得到兩個數的積?而不必對操作數移位。
與負數相乘
Figure :
二進制除法和十進制出發計算類似
計算機實現的除法算法--恢復余數除法
唯一需要修改的就是除數與部分被除數的比較方法。
人們用心算進行比較,而計算機必須做減法并檢測結果的符號位。
如果減法的?結果為正,則商1,
但若?結果為負,則應商О?并將?部分被除數與除數相加,
將其?恢復為原先的值
Figure :
恢復余數除法示例
Figure :
計算機實現的除法算法--不恢復余數除法
部分被除數減去除數之后,將檢測新的部分被除數的符號位。
Figure :
不恢復余數除法示例
浮點數即為實數,稱為浮點數的原因是小數點在數中?位置不固定。
浮點數存儲分成?兩部分:數值和小數點在數值中的位置
使用科學計數法來表示浮點數,科學計數法的好處是可以表示很大或者很小的數。
其中?尾數表示值;?指數表示小數點在數值中的位置
計算機中浮點數運算結果?一般是不確定的。不同芯片對浮點數的出來可能是不同的。
由于浮點數被定義為兩個值的積,浮點數的表示并不唯一,需要對其進行規格化。
規格化
為了使表示法的固定部分統一,科學計數法(用于十進制)和浮點表示法(用于二進制)
都在?小數點左邊使用了唯一的非零數碼,這稱為?規范化?。
十進制系統中的數碼可能是1~9,而二進制只能是1.
偏置指數(余碼系統):指數使用n位表示;給指數加上一個常熟,使得最小負指數為0
下圖給出了?4位指數?的偏置指數對應關系。
IEEE 754浮點數標準提供了3種浮點數表示
一個32位IEEE 754單精度浮點數可以被表示為下面的二進制位串:
S EEEEEEEE 1.MMMMMMMMMMMMMMMMMMMMMMM
32位IEEE754浮點數結構
IEEE754浮點數格式
Figure :
十進制轉為二進制浮點數示例
二進制浮點數轉為十進制數
接近0的浮點數: 指數為2位;;尾數為2位的浮點數系統
Figure :
浮點數0附近有一塊?禁止區,其中的浮點數都是?非規格化的,
因此無法被表示為IEEE標準格式。這個數的指數和起始位都是0的區域,也可用來表示浮點數。
不過,這些數都是非規格化的,其?精度比規格化數的精度低,會導致?漸進式下溢。
IEEE標準的其他特點
IEEE標準定義的異常有:
浮點數時不能直接進行加法運算。
浮點數加法的計算步驟: 先對階數,尾數相加,結果規格化。
第1步,找出指數較小的那個數。
第2步,使兩個數的指數相同。對于指數小的那個數,指數加幾,就將尾數右移幾位。
第3步,尾數相加(或相減)。
第4步,如果有必要,將結果規格化(后規格化)。
Figure :
因為浮點運算可能引起尾數位數的增加,因此需要能夠保持尾數位數不變的方法。
最簡單的技術叫作截斷(truncation)。
截斷會產生?誘導誤差(induced error)(即誤差是由施加在數上的操作計算所引起的),
誘導誤差是偏置的,因為?截斷后的數總是比截斷前的小。
舍入(rounding)是一種更好的減少數的位數的技術。
如果丟棄的位的值?大于?剩余數?最低位?的一半,則將剩余數的最低位加1。
舍入機制
當要舍入的數位于兩個連續浮點數的正中時,IEEE舍入機制會選擇最低位為0的點(即向偶數舍入)。
整數操作時精確、可重復的,浮點數操作是不精確的。
考慮表達式 $z = x^2-y^2$,x、y、z都是實數。
可以將表達式視作 $x^2-y^2$ 或 $(x+y)(x-y)$ 計算,整數運算得到相同結果,
但浮點數運算可能得到不同結果。
IEEE要求加、減、乘和除運算結果能夠?精確計算,并用向偶數舍入的方法將結果舍入為最近的浮點數。
舍入造成的生成誤差(generated error)或通過計算鏈傳播的傳播誤差(propagated error)
都會被引人浮點運算。
考慮使用泰勒公式來求一些高級函數在某點的值。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
騰達N300怎么樣?騰達n300v3300m無線路由器是一款低端家用路由器,價格低廉,可以滿足普通家庭的需求。具有以下特點:1.?價格更低,節約了成本。2.菜單簡單,設置簡單,安裝方便。3.支持無線中繼功能,可以擴大無線覆蓋范圍。4.無線傳輸速率快,最高300m。騰達N300無線路由器怎么樣?1.這款路由器的用戶大多是家庭用戶和中小企業。路由器的價格相對便宜,當然質量也有保證。2.這個路由器的無線...
世界十大名表排名?在這個手表“橫行”的時代,全球排名前十的手表分別是:百達翡麗、愛彼、VacheronConstantin、伯爵、積家和Gir Breguet。全球十大頂級奢侈手表?1.豪雅2.江詩丹頓3.百達翡麗4.勞力士手表5.積家6.愛彼迎(美國短租平臺)7.寶璣8.宇舶表9 .歐米茄10.全球十大頂級奢侈手表?第十名:白質白質雖然不像某些品牌那么有名,但卻是鐘表界一個隱藏的“貴族”,其歷...
怎么進入京東商城?手機登錄JD.COM商城的步驟:1.以手機JD.COM商城APP為例,打開應用主頁面,點擊頁面下方的“我的”菜單項;2.接下來,在打開的頁面中,點擊頁面頂部的“登錄”按鈕,進入賬號登錄頁面;3.最后在賬號登錄頁面輸入賬號和密碼,完成登錄操作。成功登錄后,頁面上會顯示JD.COM的賬戶信息?!毒〇|商城》是干什么的?它是JD.COM的綜合在線零售商,也是最受歡迎和最具影響力的電子商務...