2010-10-26 171 views
13

byte關鍵字表示一個整數 類型,其存儲下表中指示的 的值。它是一個無符號的8位整數。如果字節是8位整數,那麼我們如何將它設置爲255?

如果只有8位,那麼我們如何將它賦值爲255?

byte myByte = 255; 

我以爲8位是一樣的東西只有一個字符?

+1

在.net中,1個字符是16位(UTF-16) – 2010-10-26 17:10:31

+13

您意識到字符串「255」和數字255是兩個不同的東西,是嗎? – 2010-10-26 17:11:02

+3

@Marc Gravell - 我仍然覺得它在語義上有趣,單個字符相當於一個單詞。 – 2010-10-26 17:18:54

回答

19

字符通過適合8位結構的數字表示來描述(在基本意義上)。如果你看看ASCII Codes的ascii字符,你會發現它們與數字有關。

位序列可表示的整數計數由公式2^n-1生成(如上面由@Marc Gravell部分描述的)。因此,一個8位結構可以保存包括0的256個值(還要注意TCPIP號碼是4個8位結構的獨立序列)。如果這是一個有符號的整數,第一位將是符號的標誌,其餘7將表示該值,所以雖然它仍然保存256個值,但最大值和最小值將由7個尾隨位決定(so 2^7-1 = 127)。

當您進入Unicode字符和「高ascii」字符時,編碼需要多於8位的結構。因此,在您的示例中,如果您要指定一個字節值76,則可以查閱查找表以獲取ascii字符v

11

11111111(上位8) 255:128 + 64 + 32 + 16 + 8 + 4 + 2 + 1

也許你混淆這與256,這是2^8?

25

有一個字節

0000 0000 
0000 0001 
0000 0010 
... 
1111 1111 

所以可以在0-255範圍內分配一個字節的值

9

8位(無符號)爲0直通255,或比特的256個不同的配置( 2^8)-1。

聽起來像你混淆整數與文本表示的數據。

4

範圍爲無符號的8個比特值是0到255,所以這是完全有效的

8位是不一樣的,在c#一個字符。在c#中的字符是16位。即使字符是8位它沒有相關性的主要問題

5

255 = 2^8 - 1 = FF [十六進制] = 11111111 [二進制]

+0

錯字:應該是'FF [hex]' – Ishtar 2010-10-26 17:22:54

+0

當然 - 固定 – UGEEN 2010-10-26 17:26:59

2

我想你混淆的字符編碼與存儲在變量中的實際積分值。

A 8位值可以具有255點的配置由Arkain
作爲回答 可選地,在ASCII,每個這些配置的表示不同的ASCII字符
所以,基本上它取決於你如何解釋值,作爲一個整數值或作爲一個字符

ASCII Table
Wikipedia on ASCII

5

我認爲8位是一回事 只是一個字符?

我認爲你在編號255與字符串「255.」混淆。

想想這樣:如果電腦內部使用字符存儲數字,它將如何存儲那些字符?使用,對吧?

因此,在這種假設情況下,計算機將使用位來表示字符,然後用它來表示數字。除了效率觀點的可怕之外,這只是多餘的。位可以直接表示數字。

+0

嗯,COBOL做到了。許多數據庫按照小數長度定義它們的數量。上帝知道爲什麼...... – Nyerguds 2018-01-09 09:01:31

0

當然,有點晚了回答,但對於那些誰在谷歌搜索得到這個,在這裏我們去...

像其他人說,一個字符是一個整數肯定不同。不管它是8位還是不相關,但我可以通過簡單地說明每一個是如何工作的:

對於8位整數,值範圍在0到255之間是可能的(或-127..127 if它是有符號的,在這種情況下,第一位決定極性)

對於一個8位字符,它很可能是一個ASCII字符,通常用一個用十六進制值指定的索引來引用它,例如FF或0A。由於當天返回的計算機只有8位,結果是16x16表,即ASCII字符集中有256個可能的字符。無論哪種方式,如果字節長度爲8位,那麼ASCII地址或8位整數都適合變量的數據。儘管爲了簡單起見,我會推薦使用不同的更專用的數據類型。 (例如char爲ASCII或原始數據,int爲任意位長度的整數,通常爲32位)

相關問題