梦应逍遥 发表于 2025-2-14 12:13:06

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

复习


[*]第一章:需要一台计算机,在研究其构成的方向上举行努力
[*]第二章:知道了计算机由输入设备、存储器、运算器和输出设备构成,这个体系现在还在相沿,如今该探究计算机怎样表示数据了
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 一一对应起来:
二进制十进制二进制十进制00000010150001101106001020111700113100080100410019  要表示更大的数字时,像十进制一样往上叠位数就好了。只是由于二进制只有 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)
[*]如0x0,0X0,0h,0H
  八进制(Octal,简称 Oct):

[*]采用符号(8 个):0, 1, 2, 3, 4, 5, 6, 7
[*]表示方法:前缀(0o / 0O)+ 值,或者 值 + 后缀(o / O)
[*]如0o0,0O0,0o,0O
  二进制(Binary,简称 Bin)其实也有相应的表示方法,同上:

[*]采用符号(2 个):0, 1
[*]表示方法:前缀(0b / 0B)+ 值,或者 值 + 后缀(b / B)
[*]如0b0,0B0,0b,0B
  十进制(Decimal,简称 Dec)不加任何前后缀。
  下面是对照表(需要表示的值以十进制表示):
十进制值二进制八进制十六进制00b0000 或 0000b0o00 或 00o0x0 或 0h10b0001 或 0001b0o01 或 01o0x1 或 1h20b0010 或 0010b0o02 或 02o0x2 或 2h30b0011 或 0011b0o03 或 03o0x3 或 3h40b0100 或 0100b0o04 或 04o0x4 或 4h50b0101 或 0101b0o05 或 05o0x5 或 5h60b0110 或 0110b0o06 或 06o0x6 或 6h70b0111 或 0111b0o07 或 07o0x7 或 7h80b1000 或 1000b0o10 或 10o0x8 或 8h90b1001 或 1001b0o11 或 11o0x9 或 9h100b1010 或 1010b0o12 或 12o0xA 或 Ah110b1011 或 1011b0o13 或 13o0xB 或 Bh120b1100 或 1100b0o14 或 14o0xC 或 Ch130b1101 或 1101b0o15 或 15o0xD 或 Dh140b1110 或 1110b0o16 或 16o0xE 或 Eh150b1111 或 1111b0o17 或 17o0xF 或 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 和 0
[*]运算规则简单:二进制的运算规则比十进制简单得多
[*]可靠性高:区分两种状态比区分多种状态更稳定可靠
思索题
  如果未来发生了一场能源革命,发现一种新能源:另能。另能激活时,有 A、B、C 三种不同的形态,均可导通另路(类似电路)。
  那么计算机是否会发生革命?如果你是另能计算机设计者,会采用几进制?
  末了,冯·诺伊曼体系结构是否会随着技术发展而打破?
小结

知识点


[*]二进制
[*]八进制
[*]十六进制
[*]数据大小单元
参考资料


[*]Wikipedia(zh):二进制:计算机中的数据表示底子
[*]进制转换计算器
[*]ISO/IEC 80000-13:2008:信息技术中的量和单元
[*]《编码:隐匿在计算机软硬件背后的语言》
[*]《深入理解计算机体系》第 2 章:信息的表示和处置惩罚
[*]Wikipedia(zh):Сетунь:苏联诞生的三进制计算机。
思索题答案(仅供参考)


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

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

https://img2024.cnblogs.com/other/3433062/202502/3433062-20250214123341690-1195454655.png
设计师 | 南国微雪
本文由博客一文多发平台 OpenWrite 发布!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 第三章:计算机的数据表示