繁体   English   中英

如果字节是8位整数,那么我们如何将其设置为255?

[英]If byte is 8 bit integer then how can we set it to 255?

byte关键字表示一种整数类型,其存储值,如下表所示。 这是一个无符号的8位整数。

如果只有8位,那么我们如何将其分配为255?

byte myByte = 255;

我以为8位和一个字符是同一回事?

一个字节中有256种不同的位配置

0000 0000
0000 0001
0000 0010
...
1111 1111

因此可以为一个字节分配一个0-255范围内的值

字符(在基本意义上)通过适合8位结构的数字表示形式进行描述。 如果您查看ASCII码中的ASCII字符,就会发现它们与数字有关。

一个位序列可以表示的整数计数由公式2 ^ n-1生成(如上面@Marc Gravell所述)。 因此,一个8位的结构可以容纳256个值,包括0(也请注意,TCPIP号是4个单独的序列的8位结构)。 如果这是一个带符号的整数,则第一位将是该符号的标志,其余的7位将指示该值,因此虽然它仍将保留256个值,但是最大值和最小值将由7个尾随位决定(因此2 ^ 7-1-1 = 127)。

当您遇到Unicode字符和“高ascii”字符时,编码需要8位以上的结构。 因此,在您的示例中,如果您要分配一个值为76的字节,则可以查询查找表以得出ascii字符v

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

也许您将其与256(2 ^ 8)混淆了?

8位(无符号)为0到255或(2 ^ 8)-1。

听起来您好像在混淆数据的整数表示和文本表示。

255 = 2 ^ 8 − 1 = FF [hex] = 11111111 [bin]

我以为8位只是一个字符而已?

我认为您将数字255与字符串“ 255”混淆了。

这样考虑:如果计算机内部使用字符存储数字,它将如何存储这些字符 使用 ,对吗?

因此,在这种假设的情况下,计算机将使用位来表示字符,然后再使用位来表示数字。 除了从效率角度来看令人恐惧之外,这只是多余的。 位可以直接代表数字。

无符号8位的值的范围是0到255。因此这是完全有效的

8位与c#中的一个字符不同。 在c#中,字符为16位。 即使字符是8位,也与主要问题无关

我认为您将字符编码与存储在变量中的实际整数值混淆了。

一个8位的值可以有255种配置,由Arkain回答
(可选)在ASCII中,每个配置都代表一个不同的ASCII字符
因此,基本上,这取决于您如何将值解释为整数值或字符

ASCII表
ASCII上的Wikipedia

当然,要回答的时间有点晚,但是对于那些在Google搜索中获得此答案的人来说,我们开始...

就像其他人所说的,字符肯定不同于整数。 不管是8位还是无关紧要的,但是我可以通过简单地说明每个位的工作方式来提供帮助:

对于8位整数,取值范围在0到255之间(如果是带符号,则为-127..127,在这种情况下,第一位决定极性)

对于8位字符,它很可能是ASCII字符,通常由以十六进制值(例如FF或0A)指定的索引引用。 由于当时的计算机只有8位,因此结果是16x16的表,即ASCII字符集中的256个可能的字符。

无论哪种方式,如果字节长8位,则ASCII地址或8位整数都将适合变量的数据。 为了简单起见,我建议您使用其他更专用的数据类型。 (例如,对于ASCII或原始数据,为char;对于任何位长(通常为32位)的整数,为int)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM