最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

float的表示范圍為什么比long大

2023-03-06 11:38 作者:千鋒前端  | 我要投稿

很多人會有一個疑問, 一個用來表示小數(shù)的 float 為什么表示的范圍會比 long 還要大呢 ?

這次, 咱們就來詳細說一說這個事情

從長計議

聊到這個話題, 我們就要從計算機存儲數(shù)字這個位置說起了

計算機存儲數(shù)字的方式其實就是 : 二進制

二進制是計算機中最基本的數(shù)字存儲方式,所有的數(shù)字都是以0和1的二進制數(shù)表示的。計算機中的內(nèi)存和處理器等硬件組件都是以二進制為基礎(chǔ)來設(shè)計的。計算機通過將數(shù)字轉(zhuǎn)換成二進制數(shù),然后以二進制形式存儲在內(nèi)存中。

進制 : 其實就是我們數(shù)數(shù)的時候進位的方法

也就是說, 我們的數(shù)字包括其他內(nèi)容在內(nèi), 都會轉(zhuǎn)變?yōu)槎M制的形式存儲起來

例子:

  • 一個數(shù)字是 6, 轉(zhuǎn)化成二進制以后就是 110

  • 那么在計算機存儲的時候, 其實存儲的就是 110

單位

我們除了知道存儲方式以后, 還要知道一個事情, 就是計算機的存儲單位

剛才我們說了, 每一個數(shù)據(jù)其實都是按照二進制的形式存儲的

在計算機的二進制存儲中,每一個二進制數(shù)位稱為一個位(bit), 每8位二進制數(shù)被稱為一個字節(jié)(byte),通常表示為8個0和1的序列

字節(jié)(B), 就是我們通常計算機中的一種存儲單位而已, 我們一般的計算機都是按照字節(jié)來存儲的

例子 :

  • 有一個數(shù)字是 0, 二進制轉(zhuǎn)換以后是 0, 那么就會占一個 位

  • 有一個數(shù)字是 1, 二進制轉(zhuǎn)換以后是 1, 那么也是會占一個 位

  • 但是我們思考一下, 存儲的時候, 就是占了兩個位, 可是他倆不能放在一起存儲啊


  • 一旦放到一起, 到底是 01 還是 10 還是 一個 0 和 一個 1 呢 ?


  • 所以, 所有的數(shù)據(jù)存儲都會按照自己來存儲, 也就是 byte

換句話說, 就是一個數(shù)字哪怕是一個位, 那么存儲的時候也會占據(jù)一個字節(jié)的位置

  • 也就是說 : 一個數(shù)字是 1, 二進制以后是 1, 因為要占據(jù)一個字節(jié)

  • 會把這個 1 變成 0000 0001 這樣的形式來存儲

  • 這樣就剛剛好占據(jù)了一個字節(jié)的位置

根據(jù)上面的說法來看, 一個自己(byte) 存儲的最大范圍就是

  • 1111 1111 也就是 255 這個數(shù)字

  • 但是我們考慮到還有正負數(shù)的關(guān)系, 所以一個字節(jié)里面還要有一位表示正負的位

  • 所以, 其實就是 -128 ~ 127 之間的取值范圍

問題來了

那么 -129 或者 300 這些數(shù)字怎么存儲呢 ?

不同的數(shù)字類型

既然一個字節(jié)只能存儲 -128 ~ 127 范圍內(nèi)的數(shù)字, 那么其他的數(shù)字怎么辦呢, 不存了嗎 ?

這個時候, 我們就要來聊一下數(shù)字的存儲方式了(以 Java 或者 C 或者 C++ 語言為例)

byte

如果以 byte 定義一個數(shù)字, 就是告訴你的電腦, 我要申請一個字節(jié)的位置存儲數(shù)據(jù)

那么電腦會分配給你一個字節(jié)來存儲當前數(shù)據(jù), 所以只能存儲 -128 ~ 127 之間的數(shù)字

short

如果以 short 定義一個數(shù)字, 就是告訴你的電腦, 我要申請兩個字節(jié)的位置來存儲數(shù)據(jù),那么電腦會分配給你兩個字節(jié)來存儲當前數(shù)據(jù),一個字節(jié)有 8 個位, 那么兩個字節(jié)就是 16 個位。

換句話說, 如果以 byte 的形式存儲數(shù)字1, 那么是 0000 0001

如果以 short 來存儲一個數(shù)字1, 那么是 0000 0000 0000 0001

所以 short 存儲數(shù)字的最大范圍就是 -32,768 到 32,767

int

同樣的道理, int 也可以用來定義存儲一個數(shù)字 int 表示的數(shù)字會占四個字節(jié)的位置, 也就是 32 位

取值范圍就是 -2,147,483,648 到 2,147,483,647

long

同樣的道理long 表示的數(shù)字會占八個字節(jié)的位置, 也就是 64 位

取值范圍就是 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

你看這樣就好理解的多了

long 類型long?

這個類型很有意思,在不同的解析器或者編譯器內(nèi), ?long 的表示形式不一樣,上面我們說的,long 在 java, c, c++ 內(nèi)都是表示 64位, 也就是 8 個字節(jié)的位置,但是long 在 javascript 內(nèi)。

根據(jù) js 解析器來分析,long 就表示 32 的數(shù)字, 也就是占 4 個字節(jié)的位置

取值范圍就是 -2,147,483,648 到 2,147,483,647

好了,到現(xiàn)在為止, 我們知道了 long 是怎么存儲的,接下來該到了 float 了

存儲小數(shù)

剛才說完了整數(shù), 接下來我們就來說一說小數(shù)

在計算機存儲小數(shù)的時候有兩種方法

1.定點數(shù)表示法

定點數(shù)表示法是指把小數(shù)點固定在某個位置上,用整數(shù)來表示小數(shù)部分的一種方法。通常使用定點數(shù)表示法的情況下,小數(shù)點的位置被固定在一個確定的位置上,比如在小數(shù)點后一位或兩位。

例如,如果將小數(shù)點固定在第一位,那么可以把小數(shù)0.123表示為整數(shù)123。如果將小數(shù)點固定在第二位,那么可以把小數(shù)0.123表示為整數(shù)1230。

這不是我們需要的, 就不糾結(jié)了

2.浮點數(shù)表示法

浮點數(shù)表示法其實就是浮動小數(shù)點的方法來表示一個小數(shù)

我們通常會分為單精度浮點數(shù)和雙精度浮點數(shù)

這個才是我們糾結(jié)的事情, 所以要詳細解釋一下

詳細了解一下浮點數(shù)

1.單精度浮點數(shù)

單精度浮點數(shù)的存儲占用 4 個字節(jié), 也就是 32 位

其中第一個位表示的是 符號, 也就是 正負數(shù),其中第二個到第九個這 8 位來做指數(shù)占位,最后就是尾數(shù)占 23 位


表示范圍約為 1.4E-45 到 3.4E+38,精度為大約7位有效數(shù)字

2.雙精度浮點數(shù)

雙精度浮點數(shù)存儲占用 8 個字節(jié), 也就是 64 位

其中第一個位表示的是 符號,其中第二個到第十二個這 11 位來做指數(shù)占位,最后就是位數(shù)占 52 位

表示范圍約為 4.9E-324 到 1.8E+308,精度為大約 15 位有效數(shù)字

結(jié)論

事已至此, 我們該準備的都準備好了 在 JavaScript 解析器內(nèi)

  • long 表示的是 32 的數(shù)字, 取值范圍就是 -2,147,483,648 到 2,147,483,647

  • float 表示的是 32 位浮點數(shù), 因為有指數(shù)加成, 取值范圍就是 1.4E-45 到 3.4E+38

所以我們才會說, float 的取值范圍會比 long 還要大



float的表示范圍為什么比long大的評論 (共 條)

分享到微博請遵守國家法律
高州市| 离岛区| 财经| 巴中市| 陕西省| 仙游县| 和硕县| 那曲县| 建宁县| 威信县| 邳州市| 五指山市| 赞皇县| 遂川县| 吉隆县| 界首市| 贺兰县| 政和县| 南华县| 东乌| 黑山县| 娄烦县| 平定县| 林西县| 五原县| 榆社县| 璧山县| 黄浦区| 泰兴市| 龙州县| 安达市| 汶川县| 海城市| 郁南县| 吉木乃县| 郓城县| 阿克| 沙洋县| 聂拉木县| 卓资县| 连南|