float存數空間是否大於long的

2021-09-21 01:35:35 字數 660 閱讀 5827

最為乙個常識,我們都知道浮點型在記憶體中占用的是 4 個位元組的空間,而 long 型占用的是 8 個位元組的空間。可是為什麼 4 個位元組的 float 型的最大值會大於 long 型的最大值呢?

我們都知道,float 型別的範圍是:一 3.403e38~3.403e38。而 long 型別的範圍是:-263~263-1(大概是 9*10^18)。

我以前也是簡單的記住就算完事了,對於它為什麼會這樣卻沒有考慮過。

下面給大家分享一下我現在的理解:

long 整型數,在記憶體中占用 8 個位元組共 64 位,它表示的數值有 2 的 64 次方,平分正負,數值範圍是負 2 的 63 次方到正 2 的 63 次方 - 1。

而 float 在記憶體中佔 4 個位元組,共 32 位,但是浮點數在記憶體中是這樣的:

v=(-1)^s * m * 2^e

667x190

浮點數的 32 位不是簡單的直接表示大小,而是按照一定的標準分配的。

其中第 1 位,符號位,即 s。

接下來的 8 位,指數域,即 e。

剩下的 23 位,小數域,即 m,m 的取值範圍為 [1,2)或 [0,1)。

也就是說,浮點數在記憶體中的二進位制值不是直接轉換為十進位制數值的,而是按照上述公式計算而來,通過這個公式,雖然只用到了 4 個位元組,但是浮點數卻比長整型的最大值要大。

float怎麼存進char s 100 陣列?

如果 x 是 float 型,c 是 char 型,這樣就可以把型別轉換 c char x 所謂轉換是這樣的。float x 65.1 char c c char x 這樣 c 裡存的就是 65,即字元 a 補充回答 還有另外一種 轉換 不過不是 float 型轉換成 char 型,而是把 floa...

鏈結取數 條件存數

原子交換原語 將暫存器中的乙個值和儲存器中的乙個值相互交換。採用指令對的方法實現單個的原子儲存器操作。這一指令對包括鏈結取數指令和條件存數指令。示例 ll s1,20 s2 含義 s1 memory s2 20 條件存數指令 儲存暫存器的值,如果執行成功將暫存器的值修改為1,否則修改為0。示例 sc...

php判斷是否是檔案 php 判斷檔案是否存在

sha1 file 計算文字檔案sha 1雜湊 sha1 file file 語法 sha1 file file,raw 引數 file 必需。規定要計算的檔案。raw 可選。布林值,規定十六進製制或二進位制輸出格式 true 原始 16 字元二進位制格式 false 預設。32 字元十六進製制數 ...