为什么255是限制

时间:2014-10-04 21:18:56

标签: character-encoding char ascii

我见过很多地方说:

  

最大字符数为255.

其中字符是ASCII。有技术原因吗?

编辑:我知道ASCII由8位表示,因此有256个不同的字符。问题是为什么它们指定最大字符数(带有重复项)为255.

6 个答案:

答案 0 :(得分:6)

扩展ASCII 是一个8位字符集。 (原始ASCII是7位,但这与此无关。)

8位表示可以引用2 ^ 8个不同的字符。

2 ^ 8等于256,并且当计数从0开始时,最大ASCII字符代码的值为255。

因此,声明:

  

最大字符数为255。

错了,应该是:

  

最大字符数为256,可能的最高字符代码为255。

要更好地了解字符如何映射到0到25​​5之间的数字,请参阅the 8-bit ASCII table

答案 1 :(得分:5)

我认为你所指的限制是一串ASCII字符的长度。

由于优化技术而出现限制,其中存储较小的字符串,第一个字节保存字符串的长度。由于一个字节只能容纳256个不同的值,因此最大字符串长度为255,因为第一个字节是为保存长度而保留的。

因此,一些较旧的database systemsprogramming languages对其原生字符串类型有此限制。

答案 2 :(得分:1)

  

是否存在技术原因?

是的。早期的ASCII编码标准是7位日志,可以代表2 ^ 7 = 128(0..127)个不同的字符代码。

您在这里讨论的是后来开发的ASCII编码的变体,它是8位日志,可以容纳2 ^ 8 = 256(0 ... 255)字符代码。

有关相同内容的详情,请参阅Wikipedia

答案 3 :(得分:1)

限制为255,因为9 + 36 + 84 + 126 =255。第256个字符(实际上是第一个字符)为零。

使用组合公式Ck(n)= n / k = n!/(k!(nk)!)查找1,2,3,4,5,6,7的非重复组合数,您将得到8位数字:

个数字:1 2 3 4 5 6 7 8

组合:9 36 84 126 126 84 36 9

由于它是M的对称组,因此不必包含5到8位数字。换句话说,4元素生成器是一个八位位组的组操作,其组操作具有255个排列。

有趣的是,只需要3个数字就可以“计数”到1000(在789之后,其余数字是先前组合的重复)。

答案 4 :(得分:0)

计数从0开始到255结束,这意味着从1到255之间有255个计数,包括0以后,计数变为256。

用于打印所有256个字符的程序

#include<stdio.h>

int main() {
  for (int i = 0; i <= 255; i++) {
    printf("%d = %c\n", i, i);
  }
  return 0;
}

答案 5 :(得分:0)

ASCII 表中的字符总数为 256(0 到 255)。 0 到 31(共 32 个字符)称为 ASCII 控制字符(字符代码 0-31)。 32 到 127 个字符称为 ASCII 可打印字符(字符代码 32-127)。 128到255称为扩展ASCII码(字符码128-255)。

The ASCII value of a-z  =  97-122
The ASCII value of A-Z  =  65-90
The ASCII value of 0-9  =  48-57