1樓:匿名使用者
糾正一下乙個認知,資料的型別並不是固定的,而是看你程式的歲慎操作,如果操作的是mul,就認為那裡是整數,如果操作指令是fmul,就認為那裡存的就是小數至於,你問的問題,乎侍敬是因為計算機關於浮點數的存取,大部分是按照ieee的規定來存取的c語言中的float型別存取時,最高位為符號位,30-23是指數,22-0是尾數0x404947ae //這是乙個float型別0 10000000 10010010100011110101110符號 階數 尾數階數,減去偏移量127,得1,表示小數部分偏移 移動一談鬧位 大約得十進位 不曉得,我有沒有算錯(⊙o⊙)…至於double 的規定就不太清楚了。
2樓:匿名使用者
樓主可以去飯客論脊嫌壇看下,那裡有詳細的教程和解說,免費的工具發放。現在都是免費的論宴野渣壇位址:上打飯客論壇就是了。晌悄希望能幫您解決問題。
關於c語言中浮點數在記憶體中的儲存形式的疑惑
3樓:網友
你這個問題非常有意義。
雖然我們都知道浮點數的格式定義在ieee 754,我們可以換算出你定義的值。但是你這裡列印的卻不是我們換算出來的值,說明這樣列印的方法有問題。
可以做以下試驗證明:比如你定義3個一樣的浮點數,float a, b ,c; a = b = c = ;
理論上編碼方式一樣,列印出來就應該一樣(無論值是什麼)。可是用你的方法列印出來的結果是不一樣的!!!哈哈!
具體原因我也不清楚,一直想在記憶體裡面實際看看,最近工作忙,一直沒有對比過。我懷疑是位址選擇有些問題。也許用列印可以解決問題。你可以試試看。或者用除錯工具吊起來實際看看。
4樓:貓校尉
你可以去找一下 計算機組成原理 看一下。
裡面降到浮點數在計算機中的儲存形式,是由階符和階碼構成相如32位子長的計算機。
第多少位到多少位是階符。
第多少位到多少位是階碼。
所以你那樣輸出不同的數,肯定覺得是沒有規律了。
找來看一下,一切都解決了。
5樓:疾似雲流
在計算機內部整數和浮點數的表示格式是不一樣的,整數的正負是用補碼機制來實現的,而浮點數是有乙個特定的位來表示正負,另外8為或者11位(看是單精度還是雙精度)來表示指數,剩下的位才用來表示精度。
這個ieee標準上面有詳細的說明。
如果你沒看過計算機組成這本書的話,推薦清華出版社那本鄭緯民翻譯那本《計算機組成與設計——硬體/軟體介面》,本科生和研究生都是用的這本教材。
c語言二進位浮點數儲存方式
6樓:網友
float 單精度說明符,在turbo c中單精度型佔4個位元組(32位)記憶體空間,其數值範圍為,只能提供七位有效數字。
double 雙精度說明符。雙精度型佔8 個位元組(64位)記憶體空間,其數值範圍為,可提供16位有效數字。
其實記起來非常簡單的- -
自己編個程式看看~~
void main()
然後~~~答案是a=
b=由於a 是單精度浮點型,有效位數只有七位。而整數已佔五位,故小數二位後之後均為無效數字。(就是2131那部分)。
b 是雙精度型,有效位為十六位。應該顯示全部小數,但是!!!turbo c 規定小數後最多保留六位,其餘部分四捨五入。所以答案是這個。。
這樣解釋的行嗎?打字太累了~~~
c語言中浮點數
7樓:金色潛鳥
正確的浮點數 是 .62 , 就是答案b, 允許小數點前省去0
a. e3 是識別符號。 1e3 就對了c. 指數必須是整數, 2e4 就對了d. 123 是整型數。
8樓:菊隱逸者也
說簡單點,浮點數就是小數。那麼題中的正確的是,c就是科學計數法。是10的多少次方,實際是整數。
但是a中沒有小數部分。c中的指數部分不能有小數。d就不用說了,直接整數。
在c語言中。零點幾的0是可以省略的,帶上小數點就行。
9樓:自己爭取丶
選語言中e前面必須有數後面必須是整數,所以a和c不對。d是整型。
10樓:網友
對c語言來講b是肯定正確的。
c語言浮點數
11樓:匿名使用者
以0打頭說明是八進位數,八進位數03也就是十進位數3,3e2等於300,所以03e2等於300
是否合法?合法的,結果就是5
c語言浮點數儲存問題:c語言浮點數在記憶體中的儲存形態是什麼樣的?3個位元組儲存有效數字的範圍為什麼是6到7?
12樓:難得當歌對酒時
c語言的浮點數遵循 ieee 754 標準,請查閱相應資料即可。
浮點數的含義就是小數點不是固定的,其精度也不是固定的,舉例來說,c語言中的float型別佔用4個位元組長,這4個位元組分為如下3部分:
1位符號位 8位階碼 23位尾數部分這23位尾數才真正儲存了二進位的有效位,將這23位二進位轉換為十進位也就6到7位有效數字。
關於c語言浮點數問題
13樓:網友
標準c語言支援的浮點數符合ieee格式,是二進位浮點數,並不是乙個位元組存放乙個十進位小數位的。
關於ieee浮點數,可以參考這裡。
至於這裡的輸出問題,如ls所說,是printf預設輸出問題。如果使用%f和%lf格式控制符輸出浮點數,預設輸出保留6位十進位小數,自動四捨五入。用%.
nf可以控制輸出精度,n是表示保留小數位數的正整數。
14樓:杭瑋琪
把程式改成就行了。
#include
void main()
在c語言當中,在printf語句當中的%後面可以選擇加上輸出寬度選擇例如:%,整數部分代表輸入的整數部分的有效位數,小數部分代表輸入的小數部分的有效位數,如上輸出就是設定輸出整數的有效位數為3,小數的有效位數為4。
如果實際輸出大於說設定的,則以實際輸出的有效位數為主如果沒有對字元設定,那輸出浮點數就會隱含有6位小數除了有效位數的設定,還可以設定標誌字元,有興趣可以找c語言的教程看看。
15樓:網友
%f預設是輸出6位小數,你可以用%.1f,%.2f來控制小數點後位數。
c語言浮點數輸出問題
16樓:網友
n=5/4;
n是浮點數,所以要統一型別,
C語言中如何實現將浮點數float轉成int型別
強制型別轉換 比如 float a 10.5 int b int a 這樣 就轉換了,但是不推薦高精度轉低精度 會丟失精度的就像這個,a是10.5 轉換後變成10了小了太多 c語言中將一個浮點型賦值給整型時,會不會四捨五入?c語言中將一個浮點型賦值給整型時,不會四捨五入,會直接捨去小數部分的資料,也...
C語言中浮點數以整數形式輸出錯誤的問題
呵呵,我只給個思路。這個完全不是數學題,是個字串的題。找到輸入資料中小數點的位置,和冪的數值,將小數點往後移動冪指定的位數,如果已經移動到輸入串的尾部加0補充。輸出當然也只能按字串格式輸出。計算機沒有這麼高的精度的!printf a d a f a,a 這個語句決定了 你的結果 a d表示a的輸出結...
組合語言中ptr的作用是什麼,組合語言中CMP的作用是什麼?
ptr應該就是pointer 說明地址指標型別。當兩個運算元型別均不明確時,必須用byte ptr 位元組屬性 或word ptr 字屬性 將一個儲存器運算元定義為位元組或字型別。如 mov byte ptr si oah 指明 si 為位元組型別 在沒有暫存器名存在的情況下,用操作符 x ptr ...