一直以來,程式中接觸的資料型別都是int整型,char字元型,float單精度浮點型,double雙精度浮點型。看到浮點和定點一直不知道如何劃分這個概念的範疇。以為浮點就是float表示小數,定點就是int可表示整數而已。經過學習明白了顯然是錯誤的。應該是這樣劃分的:
浮點數以float為例討論。
ieee 754標準:
規定浮點數格式為:v=(
−1)s
∗m∗2
ev = (-1)^s * m * 2^e
v=(−1)
s∗m∗
2e
32位的浮點數中,s是浮點數的符號位,佔1位,安排在最高位,s=0表示正數,s=1表示負數。m是尾數,放在低位部分,占用23位,小數點位置放在尾數域最左(最高)有效位的右邊。e是階碼,占用8位。將其封裝到32位的字中:64位的浮點數中符號位1位,階碼域11位,尾數域52位
符號位階碼尾數18
23根據32位數計算為十進位制:v=(
−1)s
∗(1.m
)∗2e
−127
v = (-1)^s *(1.m) * 2^
v=(−1)
s∗(1
.m)∗
2e−1
27可以得出以下結論:
浮點數和定點數的轉換是一種對映。將較為密集的資料空間(f32)對映到較為稀疏的空間(int8);
定點數的小數點實際中是沒有的
,這只是我們邏輯上的一種設定。01序列是一樣的,cpu讀取都是相同的,因為我們邏輯上小數點的不同位置,我們認為
它代表的值是不同的;
定點數和浮點數 定點數和浮點數計算
這個東西其實不是很難,但是確實足夠繞的,因為從十進位制的加減乘除轉換到二進位制的加減乘除就已經很麻煩了,然後為了選拔人才,不給你二進位制,直接給你十六進製制,當然最麻煩的還是補碼和移碼,確實足夠 但是給予足夠的練習還是可以比較熟練的,公式稍後會整理到置頂的公式大全中。可以看完了以後去嘗試一下相關計算...
浮點數 定點數
浮點數是表示小數的一種方法.所謂浮點就是小數點的位置不固定,與此相反有定點數,即小數點的位置固定.整數可以看做是一種特殊的定點數,即小數點在末尾.8086 8088中沒有浮點數處理指令,不過從486起,cpu內建了浮點數處理器,可以執行浮點運算.一般的浮點數有點象科學計數法,包括符號位 指數部分和尾...
定點數和浮點數
小數字固定不變的數叫做定點數 定點數有三種型別 定義 無符號定點整數沒有符號位,所以它的全部數字都用來表示數字,且它的小數點隱含在最低位後,在數碼序列中並不存在。對於某種數的表示方式,我們關心兩點 序列 xnxn 1.x1x0表示無符號定點整數,則有n 1位正整數 典型值真值 序列 最大正整數 2n...