第三章:计算机的数据表示

复习

  1. 第一章:需要一台计算机,在研究其组成的方向上进行努力
  2. 第二章:知道了计算机由输入设备、存储器、运算器和输出设备组成,这个体系目前还在沿用,现在该探究计算机怎样表示数据了

TL;DR

  • 计算机使用二进制(0 和 1)表示所有数据,每一个 0 或 1 都是一个二进制位
  • 为了表示简洁和方便,采用八进制或十六进制,后二者本质还是把三个或者四个二进制位揉到了一起,用一个新符号表示
  • 更大的单位:KB,MB,GB,TB,PB,EB,ZB

正文

在了解了计算机的组成之后,我们需要思考一个关键问题:计算机如何表示和处理各种数据?

数据表示

回想一下,我们目前打算设计的计算机使用电能。而电子元件最容易实现两种状态:通电(1)和断电(0)。

这天然就是 2 种状态。

我们目前使用十进制,因为我们的手指和脚趾刚好各有 10 个,有 10 个状态,逢 10 进 1。玛雅人采用 20 进制;有些单位(一打)使用 12 进制。

那么可不可以设计出一种二进制,只有 2 个状态:0 和 1,逢 2 进 1?

  • 十进制:0、1、2、3、4、5、6、7、8、9
  • 二进制:0、1

十进制的计算方式能不能套用到二进制身上呢?

  • 十进制的 13:13 = 13₁₀ = 1×10¹ + 3×10⁰(右下角的 10 表示采用十进制)
  • 二进制的 13:13 = 1101₂ = 1×2³ + 1×2² + 0×2¹ + 1×2⁰(右下角的 2 表示采用二进制)

似乎可以,我们可以试试把二进制和十进制的 0-9 一一对应起来:

二进制 十进制 二进制 十进制
0000 0 0101 5
0001 1 0110 6
0010 2 0111 7
0011 3 1000 8
0100 4 1001 9

要表示更大的数字时,像十进制一样往上叠位数就好了。只是因为二进制只有 2 个数字,而十进制有 10 个数字,所以二进制表示相同的值时,位数要更多一些。

相关约定

为了方便计算机学界交流,这些有专业术语:

  • 1 个二进制的 0 或 1 称为 bit,比特,用 b 表示
  • 8 个二进制的 0 或 1 成为 Byte,字节,用 B 表示
    • 8 是人为规定的,二进制表示一个数据会非常长,表示 0-9 都需要 4 个 bit
  • 16 个 bit 为 Halfword,半字,用 H 表示(字和半字的概念以后会讲)
  • 32 个 bit 为 Word,字,用 W 表示(字和半字的概念以后会讲)

二进制太长,不方便阅读,人们又将 3 个或 4 个 bit 揉在一起,分别形成八进制和十六进制。

十六进制(Hexadecimal,简称 Hex):

  • 采用符号(16 个):0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f
  • 表示方法:前缀(0x / 0X)+ 值,或者 值 + 后缀(h / H)
  • 0x00X00h0H

八进制(Octal,简称 Oct):

  • 采用符号(8 个):0, 1, 2, 3, 4, 5, 6, 7
  • 表示方法:前缀(0o / 0O)+ 值,或者 值 + 后缀(o / O)
  • 0o00O00o0O

二进制(Binary,简称 Bin)其实也有相应的表示方法,同上:

  • 采用符号(2 个):0, 1
  • 表示方法:前缀(0b / 0B)+ 值,或者 值 + 后缀(b / B)
  • 0b00B00b0B

十进制(Decimal,简称 Dec)不加任何前后缀。

下面是对照表(需要表示的值以十进制表示):

十进制值 二进制 八进制 十六进制
0 0b0000 或 0000b 0o00 或 00o 0x0 或 0h
1 0b0001 或 0001b 0o01 或 01o 0x1 或 1h
2 0b0010 或 0010b 0o02 或 02o 0x2 或 2h
3 0b0011 或 0011b 0o03 或 03o 0x3 或 3h
4 0b0100 或 0100b 0o04 或 04o 0x4 或 4h
5 0b0101 或 0101b 0o05 或 05o 0x5 或 5h
6 0b0110 或 0110b 0o06 或 06o 0x6 或 6h
7 0b0111 或 0111b 0o07 或 07o 0x7 或 7h
8 0b1000 或 1000b 0o10 或 10o 0x8 或 8h
9 0b1001 或 1001b 0o11 或 11o 0x9 或 9h
10 0b1010 或 1010b 0o12 或 12o 0xA 或 Ah
11 0b1011 或 1011b 0o13 或 13o 0xB 或 Bh
12 0b1100 或 1100b 0o14 或 14o 0xC 或 Ch
13 0b1101 或 1101b 0o15 或 15o 0xD 或 Dh
14 0b1110 或 1110b 0o16 或 16o 0xE 或 Eh
15 0b1111 或 1111b 0o17 或 17o 0xF 或 Fh

数据大小单位

在计算机中,数据大小的单位遵循二进制的特点:

  • 1 KB (Kilobyte) = 1024 B = 2¹⁰ B
  • 1 MB (Megabyte) = 1024 KB = 2²⁰ B
  • 1 GB (Gigabyte) = 1024 MB = 2³⁰ B
  • 1 TB (Terabyte) = 1024 GB = 2⁴⁰ B

注意:这里的 1024(2¹⁰)而不是 1000(10³)是因为计算机使用二进制。

有趣的是,所有存储厂商使用和标注的 1 KB 并不是 1024 B,而是 1000 B,其他 MB 等单位同理。所以每个厂商标注 1 TB 或者 256 GB 等存储单位的硬盘容量,实际上比计算机认为的 1 TB 或 256 GB 要小一些。所以硬盘插上电脑之后,操作系统识别出来的硬盘容量总会比厂商标注的容量要小一些。这不是偷工减料,而是底数不相同。

特别注意

说了这么多进制可能有点晕。其实主要只有十进制与二进制。

八进制和十六进制其底层还是二进制,因为目前只有通电或断电两种状态。 使用是否通电理解二进制并不严谨,但于初学者而言容易理解且偏差不大(苏联曾经诞生过三进制计算机,但由于各种原因,并没有取代二进制成为现代计算机的基础)。

  • 1 个八进制可以拆成 3 个二进制位,因为 8 = 2³
  • 1 个十六进制可以拆成 4 个二进制位,因为 16 = 2⁴

只是因为 1101₂ 看起来不如 15₈ 和 D₁₆ 简洁(右下角表示进制),其中十六进制最简洁,只用 D 表示就可以了。

注意:上面的符号 A-F 只是人们的约定俗成,其实完全可以用其他符号表示。而至于怎样真正表示 字母形式的 A-F ,以后再说。

二进制的重要性

计算机采用二进制(0 和 1)表示数据有几个重要原因:

  1. 硬件实现简单:电路的开和关、高电平和低电平可以直接对应 1 和 0
  2. 运算规则简单:二进制的运算规则比十进制简单得多
  3. 可靠性高:区分两种状态比区分多种状态更稳定可靠

思考题

如果未来发生了一场能源革命,发现一种新能源:另能。另能激活时,有 A、B、C 三种不同的形态,均可导通另路(类似电路)。

那么计算机是否会发生革命?如果你是另能计算机设计者,会采用几进制?

最后,冯·诺伊曼体系结构是否会随着技术发展而打破?

小结

知识点

  • 二进制
  • 八进制
  • 十六进制
  • 数据大小单位

参考资料

  1. Wikipedia(zh):二进制:计算机中的数据表示基础
  2. 进制转换计算器
  3. ISO/IEC 80000-13:2008:信息技术中的量和单位
  4. 《编码:隐匿在计算机软硬件背后的语言》
  5. 《深入理解计算机系统》第 2 章:信息的表示和处理
  6. Wikipedia(zh):Сетунь:苏联诞生的三进制计算机。

思考题答案(仅供参考)

  1. 会。因为元符号数量从 2 个增长为 4 个。
  2. 4 进制。未导通态 1 个加上导通态 3 个,共 4 个。可以表示为 0-3,此时每 1 位(四进制)可以表示 2 个比特位(二进制)。
  3. 科学和技术一直在进步。假设,某一天技术强大到所有输入和输出均可一个设备完成,则该体系也会随之淘汰。

协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪
本文由博客一文多发平台 OpenWrite 发布!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358

推荐阅读更多精彩内容