位和字节以及它们的形式

时间:2016-05-11 02:08:41

标签: byte ascii bits

虽然我一直在网上搜索,但我仍然对比特和字节感到困惑。这是ASCII中的一个字符= 1个字节= 8位吗?所以8位有256个唯一模式,覆盖了所有的ASCII码,它存储在我们的计算机中的是什么形式?

如果我输入“Hello”,那意味着它包含5个字节?

2 个答案:

答案 0 :(得分:1)

对你写的所有内容都是。 “位”是二进制数字:0或1.历史上存在较小字节的字节;现在“byte”只表示“8位信息”,或0到255之间的数字。

答案 1 :(得分:0)

没有。 ASCII是一个字符集,其中128个代码点存储为值0-127。现代计算机主要处理8位内存和磁盘位置,因此7位ASCII值占用8位。

没有文字,只有编码文字。编码将字符集的成员映射到一个或多个字节。除非你完全知道你使用的是ASCII,否则你可能不是。有很多带有编码的字符集覆盖了所有256字节值,并使用字节值的任意组合来编码字符串。 有几个字符集相似但有少于256个字符。还有一些使用多个字节来编码代码点而不使用字节值的每个组合的其他字符。

您知道,除了非常特殊的情况外,Unicode是主要的字符集。它有几种编码。 UTF-8通常用于存储和流。 UTF-16通常用在内存中,特别是Java,.NET,JavaScript,XML等。当在系统之间传递文本时,必须有关于它使用哪个字符集和编码的协议,规范,标准或指示,因此字节序列可以被解释为字符。

为了增加混乱,编程语言包含称为charCharacter等的数据类型。您必须查看特定语言的参考手册以了解它们的含义。例如,在C中,char只是一个整数,定义为该C实现使用的字符编码的大小。 (C也将其称为"字节"并且它不一定是8位。在所有其他上下文中,当人们说" byte"时,人们的意思是8位。如果他们想要非常明确他们可能会说" octet"。)

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

此外,在特定语言的源代码中,像这样的文字字符串可能是"以null结尾"。这意味着你可以说它是6"字符"。其他语言可能将字符串存储为计数的代码单元序列。同样,您必须查看语言参考以了解字符串的基础数据结构。当然,如果使用它的语言和库是足够高级的,你可能永远不需要知道这样的内部。