C C 關於浮點數在計算機中的計算機制?

時間 2023-03-20 02:10:09

1樓:網友

首先,要校正一下你問題中的錯誤:任何計算機裡面的算術邏輯運算都不是在記憶體裡面的進行的。必須先將資料讀入cpu中的暫存器,然後通過alu部件(運算部件)進行運算的。

這點切記別搞錯了。

以下講講浮點數的運算。其實在我的理解上,浮點數的運算和整數的運算其實區別不大。計算機浮點數的表示其實類似於我們數學中科學技術法。

科學計數法中,乙個數n可表示為n=10^e·m;而計算機中的乙個浮點數n也可表示n=r^e·m(r為基數,計算機中r=2,m為尾數,是純小數,e為指數,為整數),從ieee754標準看,有32位和64位浮點數,拿32位的來說明。在計算機中,將乙個32為的浮點數分為3個部分:符號位s(1位),階碼e(用e的移碼表示,8位,e=e+127,為2進製數),尾數m(23位)。

了解浮點數組成後,對於運算的理解也就不難了。

當進行兩個浮點數運算時,其實是兩個數中對應部分分別進行運算,各部分運算過程其實和整算沒什麼兩樣。

浮點數運算過程:①比較階碼大小並進行對階,這個操作類似於我們進行小數運算或用科學計數法表示的數進行運算時的對齊小數點的過程,這個過程就是階碼段e的運算。

②尾數運算。

③結果規格化。就是對於結果如果不符合標準,則進行相應處理。

④捨入處理。就是運算時結果可能超出計算機儲存長度,則進行捨入處理。

⑤溢位處理。

浮點數運算大概就這樣了。

2樓:匿名使用者

建議看計算機組成原理,要好好利用網路資源,我不想做複製貼上黨,鍛鍊自己的資訊檢索能力。

3樓:網友

加是最簡單的,直接是二進位制的運算,減就是取反之後的 加,乘就是n個加,至於除我忘記了,不過除好像是最難的,需要額外的寄存,具體的可以自己去看一下專業的實現,這個很底層了,與c/c++關係有限,基於cpu實現的。

4樓:匿名使用者

整數的運算無非就是運用補碼,原碼,反碼進行二進位制運算。

浮點數在計算機中的運算和整數不同,它涉及到了尾數和碼數的運算,當然歸根到底還是二進位制的補碼,原碼等的運算。建議看看計算機組成原理裡的資料運算章節。

5樓:遙望彼堓

你了解一下數的反碼,補碼,原碼等等,就不難了。

6樓:浦枋樂正

都是用函式 進數 代表 計算的。

計算機組成原理——浮點數表示方法

7樓:網友

就是在二進位制中,乙個數的小數點可以可以通過乘以2的冪次來改變位置,這是其原理 。

浮點數的組成:階符+ 階碼 +數符+ 尾數。

計算機中表示浮點數的字長通常為32位,其中7位作階碼,1位為階符,23位尾數,1位作數符。

例如用2個位元組表示乙個浮點數(32寫起來麻煩,所以用2個位元組就是16位來舉例,呵呵希望諒解) (先換成普通二進位制數(11011101000110011001000)b

然後開始像十進位制數的科學計數法那樣寫成約等於(

之後再將後半部分的(2^23)d轉換成(2^10111)b

於是整個數就變成了(

在計算機中表示成0001011101101110 其中第乙個0是階符表示指數是正的第九個0表示尾數是正的他們中間的就是階碼,後面的就是尾數。

浮點表示法是已知的c/c++編譯器都是按照ieee(國際電子電器工程師協會)制定的ieee浮點數表示法來進行運算的。這種結構是一種科學表示法,用符號(+或-)、指數和尾數來表示,底數被確定為2。所以在ieee浮點數表示法裡,乙個浮點數為尾數乘以2的指數次方再加上符號。

float規格float共計32位,4位元組由最高到最低位分別是第31、30、29、……0位,則:31位是符號位,1表示該數為負,0表示為正。30-23位,一共8位是指數字。

22-0位,一共23位是尾數字。3、轉換例子按照ieee浮點數表示法,將float型浮點數轉換為二進位制(注:

這裡的f表示浮點數,為十進位制數,不是表示16十六進製制)。

處理不帶小數的浮點數時,直接將整數部轉化為二進位制表示:11110001001000000也可以這樣表示:11110001001000000.

0然後將小數點向左移,一直移到離最高位只有1位:共左移了16位,所以原數就等於:

。 可知尾數為1。

計算機組成原理——浮點數表示方法

8樓:匿名使用者

為了表示浮點數,數被分為兩部分:整數部分和小數部分。例如,浮點數就有整數部分14和小。

數部分首先把浮點數轉換成二進位制數,步驟如下:

1把整數部分轉換成二進位制。2把小數部分轉換成二進位制。3在兩部分之間加上小數點。

浮點數還可以規範化,浮點數可以用單精度表示法和雙精度表示法。規範化只儲存這個數的三個部分的資訊:符號,指教和尾數。

如+規範化後為。

符號 指數 尾數。

規範化數的單精度表示法如+2^6*解:

由於符號為正,就用0表示。指數是6,在excess_127表示法中,給指數加上127得到133.用二進位制表示,就是10000101.

尾數是01000111001.當把位數增加到32位,得到01000111001000000000000.注意不可以漏掉左邊的0,因為它是小數。

漏掉了那個0就相當於把這個數乘於2.這個數在記憶體中以32位數儲存。如下所示。

符號 指數 尾數。

9樓:匿名使用者

我畫個**釋:

當然我們程式設計的時候不用這麼麻煩,可以 >>來移位。

10樓:匿名使用者

ms e m

1位 m位 n位。

其中ms為數值符號位;e位階碼,移碼表示;m位數值,原碼表示。

例:資料(二進位制):的5次方)浮點數表示為:

資料 移碼符號 數值為。

符號 為1,數 為0 值為5

11樓:匿名使用者

float例如實數在計算機中的存放形式為。

+.31415926 1(1指10^1)

計算機組成原理——浮點數表示方法

浮點數的計算機表示問題

12樓:匿名使用者

s位對的 負數是1

階碼部分 = 1010101*e-3 所以這裡應該是124

尾數部分 就是這裡的1010101

13樓:匿名使用者

可參考一下ieee754標準,幾句話很難講清楚。

關於CC語言void

void是指函式沒有反回值,也就是說語句void g 在函式g中不能使用return語句來反回值,相反int g 則必須在函式中使用return語句來反回乙個整型值,比如int g 就表示函式g反回乙個整數值2。反回的這個值可以賦給變數,比如int i i g 這樣的話變數i就有乙個值2了。明白了?...

關於C c 記憶體分配問題

前者和後者都一樣犯了同乙個錯誤 由於變數是在棧中分配 每個程式都有自己的棧,也就是這裡面的資料不會被其他的程式修改,但是可能會被你自己修改。所以當你立刻返回這個位址,並且立刻按照正確的型別讀取它那麼你所獲得的值是正確的.這就是你的試驗結果 看起來沒有什麼錯誤.但是這種小 技巧 很可能讓你的程式崩潰或...

C關於類的繼承, C C 關於類的繼承

s2.methoda 錯誤,不能編譯通過 class sample2為私有繼承class sample,故私有繼承的原則是私有資料成員不能被直接訪問,公有資料成員可以被class sample2直接訪問,如要訪問methoda 則必須使用函式呼叫,不能直接用物件訪問私有成員!這是c 的原則!dad的...

關於大眾CC一鍵啟動系統,一鍵啟動大眾cc怎麼開

車門把手上有個感應小方塊,用手摸一下就鎖了。下車以後就不用管了,因為cc高配的是感應車門。只要隨身帶著鑰匙就行。下車關門直接走就行,因為你鑰匙在口袋裡所以你能開門。你下車直走開10公尺把鑰匙放地上再回去開門試試,保證開不開了,必須車子感應到鑰匙在車門外兩公尺內才會自動解鎖。一鍵啟動大眾cc怎麼開 一...

入門者的問題,關於C C 和C,windows下的程式設計

樓主真心是個有心人 我一直對程式設計有些興趣,但沒打算以後從事軟體方面的工作,當做業餘愛好吧.不過看後來你寫的又不僅僅滿足 業餘愛好 所以,首先要清楚自己要的到底是什麼 機械專業 我建議還是學一些和這個有關的軟體方面的東西,比如一些專業軟體的使用,我是軟體工程的,不清楚那方面 如果和嵌入式有關,可以...