計算機內部數字的儲存 擴充套件

2021-10-09 12:39:43 字數 2990 閱讀 5428

在對精度要求很高的系統中,或要對小數的運算結果進行比較時,需要特別謹慎

js中的小數運算是精確的嗎?

不一定js中的整數運算是精確的嗎?

不一定js中表示的整數是連續的嗎?

不是,當 js 的數字很大的時候,不再連續

js中表示的最大數字是多少?

最大連續整數:

從1開始數到這個數字一直都是連續的,並且到下乙個數字也是連續的,通過number.max_safe_integer在控制台檢視

js中能表示的數字有效位數是多少?

16~17位

計算機世界中是二進位制,因為計算機是由若干電路構成的,通過電平的高低來表示二進位制

二進位制轉換成十進位制

十進位制轉換為二進位制

整數

13···>

//除2取餘13/

2 商 6 餘 16/

2 商 3 餘 03/

2 商 1 餘 11/

2 商 1 餘 1

//餘數從下往上看就是該數對應的二進位制

--1101

小數···>

3.25

整數部分一樣--

--結果為11

小數部分

//乘2取整

0.25*2

=0.5 整數部分:0

0.5*2=

1 整數部分:1

整數部分從上往下看

11.01

十進位制的小數,轉換為二進位制後,可能是無限小數,但是計算機對數字的儲存能力有限,因此會丟失一些資料;

比如:

十進位制-

0.3整數部分:0

小數部分:

運算 整數部分

0.3*2=

0.60

0.6*2=

1.21

0.2*2=

0.40

0.4*2=

0.80

0.8*2=

1.61

0.6*2=

1.21

0.2*2=

0.40

...//變數名.tostring(2),將該變數轉換為2進製並展示出來

整數法、浮點數

js中,儲存的所有數字,都按照浮點法存放。

浮點法存放的數字,叫做浮點數(float),浮點數分為單精度和雙精度.

js中,使用雙精度存放浮點數,ieee 754標準.

存放方式

js在計算機中,給每個數字開闢一塊記憶體空間,尺寸固定為64位,哪怕存個1,前面63位補0;

在計算機中,位(bit)是最小的儲存單位,簡稱為bit,

1 byte = 8 bit

1 kb = 1024 byte

1 mb = 1024 kb

1 gb = 1024 mb

[第一段][第二段][第三段]

第一段:1位,表示符號位,1負 0正

第二段:11位,表示指數字,這裡的指數是指2為底的指數,而不是10

第三段:52位,表示有效數字

舉例:

0        1000 0000 011      1111 0000 0000 0000...
相當於: 1.1111∗2

1027

−1023

1.1111 * 2 ^

1.1111

∗210

27−1

023

特殊情況

指數為0,同時尾數為0—表示數字0

指數為2047, 尾數為0—表示正無窮

+infinity: 0 1111 1111 111 0000 0000 0000...
符號為1,指數為2047,尾數為0,表示負無窮;

-infinity: 1 1111 1111 111 0000 0000 0000...
指數為2047, 尾數不為0,表示nan

nan : 1 11111111111 011000010000...
乙個正常的數字,指數部分最多是2046

0   1111 1111 110   1111 1111 1111 1111...
相當於:1.11111111...∗2

1023

1.11111111... * 2 ^ 1023

1.1111

1111

...∗

2102

3在console裡面用number.max_value檢視

最小數字用number.min_value檢視

安全數字: 從1開始到該數字,均是連續的整數,並且該數的下乙個整數是存在的.

0 *********xx 11111111...
相當於: 1.11111111...∗2

52

1.11111111... * 2 ^ 52

1.1111

1111

...∗

252

指數為52可以 去掉小數點,所以算出來結果就是最大安全整數:53個連續的1

咱們先不忙著算二進位制的53個連續的1是多少,來看一下十進位制裡:

十進位制裡面每一位最大是9, 

9 10**1 - 1

99 10**2 - 1

999 10**3 - 1

9999 10**4 - 1

發現規律了沒,所以在二進位制裡面53個連續的1相當於就是2**53 - 1

計算機內部浮點型資料的儲存

c c 浮點數在記憶體中的儲存方式 任何資料在記憶體中都是以二進位制的形式儲存的,例如乙個short型資料1156,其二進位制表示形式為00000100 10000100。則在intel cpu架構的系統中,存放方式為 10000100 低位址單元 00000100 高位址單元 因為intel cp...

計算機內數字的表示

計算機中的數字有三種表示 無符號數 補碼 帶符號數 浮點數 資訊的儲存與定址 計算機中將位元組作為最小可定址單元。而位元組的排列順序分大端法和小端法兩種。大端法就是指將最高位放在最前面的儲存方式,而小端法則是將最低位放在最前面的儲存方式。c語言中的移位運算 帶符號數與無符號數的轉換 帶符號數 無符號...

整數是如何儲存在計算機內部的

整數分為正整數和負整數,因此在存入到計算機時需要考慮到正號負號,接下來就討論整數儲存方式。1.無符號表示法 假設計算機的記憶體分配了n個位來讓我們儲存乙個整數,把這n個位稱為乙個儲存單元,那麼使用無符號表示法可以儲存的整數的範圍是0到 2 n 1 步驟分為以下幾步 首先將整數變為二進位制數 如果二進...