【问题标题】:How many characters can you store with 1 byte?1个字节可以存储多少个字符?
【发布时间】:2014-02-13 13:45:46
【问题描述】:
1 byte = 8 bits 

那么,这是否意味着 1 个字节只能容纳一个字符?例如:

"16" uses 2 bytes , "9" uses 1 byte , "a" uses 1 byte, "b" uses 1 byte 

如果tiny int 的范围是 0-255,这是否意味着它可以存储 255 个字符?

什么是存储

1. tiny int (1)
2. tiny int (2) 

range 0-10 会是什么

【问题讨论】:

  • 为什么不试试这个并告诉我们?
  • 字节是系统中最小的数据单位。通常,1 个字节 = 1 个 ASCII 字符。 2 个字节 = 1 个 UTF-16 字符。无符号字节可以旧值 0-255。
  • "16 = 2 bytes" 如果 16 是一个数字,那么它也是 1 个字节,而不是 2 个字节。
  • 一个字符有 256 个不同的可能值。
  • 这个问题的前提是完全错误的。一个字节不定义为 8 位,即一个八位字节。一个字节是架构中最小的可寻址数据大小。

标签: mysql character byte


【解决方案1】:

1 个字节可以容纳 1 个字符。 例如: 参考每个字符的 Ascii 值并转换为二进制。 这就是它的工作原理。

值 255 存储为 (11111111) 基数 2。 访问此链接以了解有关二进制转换的更多信息。 http://acc6.its.brooklyn.cuny.edu/~gurwitz/core5/nav2tool.html

Tiny Int 的大小 = 1 字节(-128 到 127)

Int = 4 字节(-2147483648 到 2147483647)

【讨论】:

  • 虽然一个 8 位字节恰好包含一个 8 位字符,但如果您使用的是字符子集,它们可以被编码为少于 8 位。例如,如果您想存储大写字母 A-Z,则可以在一个字节中存储多达 9 个。这在实践中确实很少见,通常需要的不仅仅是 A-Z(即使在实施时不需要,将来也会需要)。如今,空间很便宜,因此我们通常不会屈服于这种编码方式,坦率地说,这种编码方式的繁琐程度令人讨厌。
【解决方案2】:

是的,1 字节确实编码了 ASCII 集中的字符(包括空格等)。 然而,在分配给字符编码的数据单元中,实际上它可以并且通常需要多达 4 个字节。这是因为英语不是唯一的字符集。甚至在英文文档中也经常出现其他语言和字符。这些数量很多,还有很多其他编码集,您可能听说过,例如BIG-5、UTF-8、UTF-32。现在大多数计算机都允许这些用途,并确保最少的乱码文本(这通常意味着缺少编码集)。4 个字节足以覆盖这些可能的编码。每个字符的 I 字节不允许这样做,并且在使用中,对于所有编码,它通常大于每个可能的字符 4 个字节,而不仅仅是 ASCII。最后一个字符可能只需要一个字节即可运行或在屏幕上表示,但需要 4 个字节才能位于相当庞大的全局编码“作品”中。

【讨论】:

  • 您的观点是有效的,但我认为您将英文字母与English letters 混淆了。 (我认为英语有些独特之处在于“The Alphabet”没有列出所有字母,更不用说它们的所有计算机字符形式了。)
【解决方案3】:

2^8 = 256 个字符。二进制中的字符是一系列 8(0 或 1)。

   |----------------------------------------------------------|
   |                                                          |
   | Type    | Storage |  Minimum Value    | Maximum Value    |
   |         | (Bytes) | (Signed/Unsigned) | (Signed/Unsigned)|
   |         |         |                   |                  |
   |---------|---------|-------------------|------------------|
   |         |         |                   |                  |
   |         |         |                   |                  |
   | TINYINT |  1      |      -128 - 0     |  127 - 255       |
   |         |         |                   |                  |
   |----------------------------------------------------------|

【讨论】:

  • 我认为 1 个字节可以容纳 256 个字符是很混乱的——它不能,而是 1 个字符可以有 256 个选项/变体/字符(a、b、c 或.. .) - 如果字符只用了 1 个字节。如果它需要更多字节,例如 unicode,那么它将允许更多字符选项,这当然需要 unicode。就像 1 个字节可以容纳 256 个“选项”一样,您可以将 0 到 255 之间的任何单个数字存储在 1 个字节中作为单个数字,但这并不意味着您可以获得 255 个不同的数字。
【解决方案4】:

TINYINT数据类型的语法是TINYINT(M)

其中M 表示最大显示宽度(仅在您的 MySQL 客户端支持时使用)。

(m) 表示 SELECT 语句中的列宽;然而,它 不控制该字段可接受的数字范围。

一个 TINYINT 是一个 8 位整数值,一个 BIT 字段可以存储 1 位 BIT(1) 和 64 位 BIT(64)。对于布尔值,BIT(1) 很常见。

TINYINT()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    相关资源
    最近更新 更多