2010-10-26 169 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位)

相关问题