位和字节以及它们是什么形式

问题描述 投票:0回答:3

尽管我一直在互联网上搜索,但我仍然对位和字节感到困惑。 ASCII 的 1 个字符 = 1 个字节 = 8 位吗?那么8位有256种独特的模式,涵盖了所有的ASCII码,它以什么形式存储在我们的计算机中?

如果我输入“Hello”,这是否意味着它由 5 个字节组成?

byte ascii bit
3个回答
1
投票

对你写的一切都是肯定的。 “位”是一个二进制数字:0 或 1。历史上存在较小尺寸的字节;现在“字节”仅表示“8 位信息”,或 0 到 255 之间的数字。


0
投票

不。 ASCII 是一个字符集,具有 128 个代码点,存储为值 0-127。现代计算机主要对 8 位内存和磁盘位置进行寻址,因此 7 位 ASCII 值占用 8 位。

没有文本,只有编码文本。一种编码将字符集的成员映射到一个或多个字节。除非您绝对知道自己正在使用 ASCII,否则您可能不会。有相当多的字符集的编码涵盖了所有 256 字节值,并使用字节值的任意组合来编码字符串。 有几个字符集相似,但字符集少于 256 个。还有一些使用多个字节来编码代码点,并且不使用字节值的每种组合。

正如您所知,除了非常特殊的情况外,Unicode 是主要的字符集。它有多种编码。 UTF-8 通常用于存储和流。 UTF-16 经常在内存中使用,特别是在 Java、.NET、JavaScript、XML 等中。当文本在系统之间进行通信时,必须有一个关于其使用的字符集和编码的协议、规范、标准或指示,以便可以将字节序列解释为字符。

更令人困惑的是,编程语言有称为

char
Character
等的数据类型。您必须查看特定语言的参考手册才能了解它们的含义。例如,在 C 中,
char
只是一个整数,定义为该 C 实现所使用的字符编码的大小。 (C 也称其为“字节”,但它不一定是 8 位。在所有其他上下文中,人们在说“字节”时指的是 8 位。如果他们想非常明确,他们可能会说“八位字节”。)

“你好”有五个字符。在特定的字符集中,它是五个代码点。在该字符集的特定编码中,它可以是 5、10 或 20,或者 ???字节。

此外,在特定语言的源代码中,这样的文字字符串可能是“空终止”。这意味着您可以说它是 6 个“字符”。其他语言可能将字符串存储为代码单元的计数序列。同样,您必须查看语言参考才能了解字符串的底层数据结构。当然,如果语言及其使用的库足够高级,您可能永远不需要了解这样的内部结构。


© www.soinside.com 2019 - 2024. All rights reserved.