2014-08-28 48 views
0

我在讀這question,它表示需要17位來存儲5位數字,這怎麼可能?以下是我的理解:編程新手 - 需要17位來存儲5位數字 - 怎麼做?

我用following calculator和輸入的號碼99999

我得到了這個龐大的數字:

11000000111001110000110100111111100001101001111111000011010011111

據我所知,每個01代表一個位。正如你所看到的,有超過17位!

我理解這個錯誤嗎?

此外,也有人指出:

「現在第一個二進制值,它允許你以適應數字99999是131072,」

咦?我認爲二進制值只有0和1?我在這裏錯過了什麼?

+4

當我試圖你鏈接到的計算器,我得到99999 - > 11000011010011111這是17位確實... – SirDarius 2014-08-28 16:49:12

+0

我越來越'11000011010011111' – qbit 2014-08-28 16:49:35

+0

最後一部分只是兩個最小的功率。 131072是2¹⁷。由於每個位都保存兩個值,所以可以轉換爲17位。 – chris 2014-08-28 16:49:40

回答

3

99 999二進制爲11000011010011111,正是因爲你的計算器說。我不知道你輸入了什麼,但顯然你在某個地方犯了一個錯字。

17位可以存儲最多2^17的數字,因此= 131072,而16位只能存儲最多 2^16 = 65536。

所以你確實需要至少17位來存儲99 999,不能再少了。

+3

如果您將1編碼爲99_999,那麼您只需要一位。關鍵是你需要17位來存儲100_000 *不同的值*。 – 2014-08-28 17:02:41

2

2^16 = 65,536,因此爲了捕獲每5位數字,您需要2^17 = 17位。

約的一部分「第一二進制值...」是沒有意義的,我

+1

可能意味着在2^17之前,您不能存儲所有5位十進制值。 idk – qbit 2014-08-28 16:52:12

+1

131072是2^17,兩個大於99999的最小功率。 – 2014-08-28 16:52:22

0

那麼,16位可存儲數高達2^16 - 1 = 65535。這是假設無符號數(非負),這意味着它是不足以代表5位數的十進制數。

使用17位,你可以得到表示無符號數高達2^17 -1 = 131071

0

我認爲你的主要問題是找到你的方式通過在域內同樣經歷的人之間通常使用的不精確的語言。數字131072是2 ,這是兩個超過五位十進制數字的最小功率。換句話說,要存儲任意5位十進制數字,您需要這17位,因爲這是涵蓋範圍0-99999的最小位數。

在報價你目前筆者假設讀者熟悉號碼131072,事實上,它是兩個電源,因此一個整數的二進制表示法,而事實上,對於任何n,恰好有2 n distinct n -digit二進制數字。

+0

我還是不明白131072代表什麼..我知道他們是如何派生的..但是這個數字告訴我們什麼? – 2014-08-28 17:13:51

+0

嘗試將您的評論短語集中在困擾你的一個方面。我不知道如何回答。 – 2014-08-28 17:15:13

+0

@shmedfred,爲了解131072代表什麼,您需要了解地點值數字系統(http://en.wikipedia.org/wiki/Positional_notation),特別是base-2(又名「二進制」 )地點價值體系。 – 2014-08-28 17:31:35

0

而是然後用在線計算器,我會用Java和Integer.toBinaryString(int)喜歡的東西 -

int val = 99999; 
String binaryString = Integer.toBinaryString(val); 
System.out.printf("%d is binary %s and %d binary digits long", val, 
     binaryString, binaryString.length()); 

,輸出是

99999 is binary 11000011010011111 and 17 binary digits long 
0

考慮用於存儲5位十進制數的可能性:

00000 
11111 
22222 
33333 
44444 
55555 
66666 
77777 
88888 
99999 

對於每個位,有10個(即, 「基體10」)的可能值,並用5位你有10 * 10 * 10 * 10 * 10 = 10^5 = 100000(計數0)可能的值。

對於17位二進制數:

00000000000000000 
11111111111111111 

使用相同的邏輯,你有2 * 2 * ... * 2 = 2^17 = 131072個可能值範圍從0到131071.至於爲什麼你需要17位?那麼,2^16 = 65536,它不能容納99999.

相關問題