《计算机系统:核心概念及软硬件实现(原书第4版)》——3.4十六进制和符号表示

简介:

本节书摘来自华章计算机《计算机系统:核心概念及软硬件实现(原书第4版)》一书中的第3章,第3.4节,作者:[美] J. 斯坦利·沃法德(J. Stanley Warford)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4 十六进制和符号表示

前面章节中的二进制表示是整数表示,本节介绍另一种基数,将用于下一章中介绍的计算机。本章还将介绍这种计算机是如何存储字母信息的。
3.4.1十六进制
假定一个人有16根手指而不是10根。那么发明阿拉伯数字时,会发生什么情况呢?记得10根手指模式是从0开始,一直继续发明新的符号1、2,直到倒数第二根手指9,接着在最后一根手指,把1和0结合在一起表示下一个数10。
如果是16根手指,当达到9时,仍然还剩下不少的指头,必须继续发明新的符号,这些额外的符号通常用英语字母表开头的字母表示,因此以16为底(十六进制,或缩写为hex)的计数是这样的:
image

当十六进制数字包含许多位时,计数就有点儿麻烦。思考从8BE7、C9D和9FFE开始接下来的5个数字:
image

当写八进制数时,数字看上去有比它们实际要大的趋势;写成十六进制数时,效果是相反的,数字有看上去比它们实际要小的趋势。比较十六进制数的列表和十进制数的列表,可以看出18(hex)实际上是24(dec)。
3.4.2基数转换
在十六进制中,每个位置值都是比它低一位的位置值的16倍。十六进制转换为十进制,可以简单地把位置值乘以该位置的数字,并相加。

image


例3.24图3-21给出了把8BE7从十六进制转换到十进制的过程。B的十进制值是11,E的十进制值是14。 □
从十进制转换到十六进制的过程类似于从十进制转换到二进制的过程,不过不是一个接一个地除以2,而是除以16,并保存余数的记录,这些余数就是转换后的十六进制数。
对于小于255(dec)或FF(hex)的数,两种进制互相转换用图3-22所示的表格是很容易做到的。表中的主体是十进制数,左列和顶行是十六进制数。
image
image

例3.25把9C(hex)转换到十进制,查看9行和C列找到156(dec);把125(dec)转换到十六进制,在表的主体中找到125,从对应的左列和顶行得出7D(hex)。 □
如果计算机以二进制格式存储信息,那么为什么要学习十六进制呢?答案是,二进制和十六进制之间存在特殊关系,如图3-23所示。4位有16种可能的组合,而正好有16个十六进制数字,每个十六进制数字代表这4位。
为了节约打印空间,位模式经常被写成十六进制形式。一个16位机器的手册可能会说某个内存位置包含01D3,这要比说它包含0000 0001 1101 0011简短多了。

image


把无符号二进制转换到十六进制,从最右边开始把位划分为每4个一组,给每组一个图3-23对应的十六进制数字。把十六进制转换到无符号二进制,简单地把过程反过来即可。
例3.26写出10位无符号二进制数10 1001 1100的十六进制形式,从最右边的4位1100开始:
10 1001 1100(bin)=29C(hex) □
由于10位不能刚好分为4个一组,所以在图3-23中查找最左边的数字时,在前面加2个0。在本例中,最左边的十六进制数字来自
10(bin)=0010(bin)=2(hex) □
例3.27对于14位单元
0D60(hex)=00 1101 0110 0000(bin)
注意,最末尾的十六进制0代表4个二进制0,而最高位的十六进制0只代表2个二进制0。 □
把十进制转换为无符号二进制,你可能想要用十六进制-十进制表作为中间步骤。通过查找图3-22中的十六进制值,不用任何计算,再根据图3-23把每个数字转换为二进制即可。
例3.28对于6位单元,
29(dec)=1D(hex)=01 1101(bin)
转换中的每一步都是一次简单的查表。 □
在机器语言程序代码或程序记录中,几乎不会把数字写成有负号的十六进制形式,而是把符号位隐含地包含在十六进制表示的位模式中。你必须牢记十六进制只是二进制序列的一个方便的缩写,硬件只存储二进制值。
例3.29如果一个12位的内存位置包含F7A(hex),那么通过思考下面的位模式可以得出十进制数。
F7A(hex)=1111 0111 1010(bin)
符号位是1,因此这个数是负数,转换为十进制是
F7A(hex)=-134(dec)
注意,尽管可以解释成一个负数,但是十六进制数不会写成有负号的形式。 □
3.4.3字符
因为计算机内存是二进制的,所以字母字符必须要编码后才能存储到内存中。美国信息交换标准代码(American Standard Code for Information Interchange,ASCII)是一个使用广泛的字母字符二进制编码。
ASCII包含所有大写和小写的英文字母、10个数字和特殊符号(例如,标点)。它的一些符号是不能打印的,主要用于在计算机之间传递信息或用于控制外围设备。
ASCII是一种7位的编码。因为7位有27=128种可能的组合,所以有128个ASCII字符,图3-24给出了所有这些符号。表中第一列是不可打印的符号,它们的意思列在表下,表中其余部分是可打印的符号。
例3.30代表响铃(bell)的序列000 0111使终端发出哗哗声。另一个例子是一组命令,用于控制纸张打印机在新的一行起始开始打印。计算机发送一个回车符(CR,000 1101),再发送一个换行符(LF,000 1010),CR使得“打印头”或光标回到纸张的左边,LF使纸张往下走一行。 □
例3.30名字Tom会以下列ASCII形式存储,
101 0100
110 1111
110 1101
如果将这个位序列发送到输出终端,就会显示“Tom”。 □
例3.32街道地址52 Elm会以下列ASCII形式存储,
011 0101
011 0010
010 0000
100 0101
110 1100
110 1101
2和E之间的空格是一个独立的ASCII字符。 □
尽管ASCII使用广泛,但它绝对不是表示字符的唯一编码。由于这种7位编码没有提供除英语外其他语言中常见的重音符号,因此它的使用是有限的。由于这个限制,所以对其做了扩展,使用8位来提供很多7位无法表示的重音符号。
image

图3-24 美国信息交换标准代码(ASCII)
但即便有了这个扩展仍不足以处理非拉丁字符。由于全球信息交流的重要性,所以发明了一种称为Unicode(统一码)的标准。Unicode的目标是可以对世界上所有语言的符号进行编码,甚至包括已经不再使用的古语言。Unicode符号集合使用32位或4字节。由于大多数的应用不会用到这些符号中的大多数,所以Unicode标准制定了使用小于4字节的技术。基本多文种平面(Basic Multilingual Plane)包含常用的Unicode字符,每个字符仅占用2字节。用它来存储1字节的扩展ASCII码,所需存储空间是其两倍。不过基本多文种平面实际上包含了世界上所有的书面语言,包括阿拉伯语、亚美尼亚语、汉语、西里尔语、希腊语、希伯来语、日语、韩语、叙利亚语、许多非洲语言,甚至加拿大土著语言模式。

相关文章
|
Web App开发 前端开发
chrome浏览器web打印需要了解的几个小技巧
当我们使用web打印相关的解决方案的时候,还有不少小坑值得注意下,同时需要了解几个小技巧提升在web打印上的友好度,以下整理一些常见的小技巧
chrome浏览器web打印需要了解的几个小技巧
|
机器学习/深度学习 算法 TensorFlow
深度学习基础:神经网络原理与构建
**摘要:** 本文介绍了深度学习中的神经网络基础,包括神经元模型、前向传播和反向传播。通过TensorFlow的Keras API,展示了如何构建并训练一个简单的神经网络,以对鸢尾花数据集进行分类。从数据预处理到模型构建、训练和评估,文章详细阐述了深度学习的基本流程,为读者提供了一个深度学习入门的起点。虽然深度学习领域广阔,涉及更多复杂技术和网络结构,但本文为后续学习奠定了基础。
583 5
|
传感器 人工智能 智能设计
《智启新材热学性能优化之路:人工智能的神奇力量》
在科技飞速发展的时代,材料科学与人工智能的融合成为创新前沿。AI优化材料热学性能,从航空航天到电子设备散热管理,影响深远。通过精准预测、智能设计、实时监测与反馈,AI大大缩短研发周期,提升材料性能,推动热学材料领域的突破,为各行业带来新的曙光和可能性。
225 0
|
运维 监控 安全
云计算环境下的运维挑战与解决方案
本文探讨了云计算环境中运维面临的主要挑战,包括资源管理、自动化部署、安全性问题等,并提出了相应的解决策略。通过案例分析和最佳实践,为云环境下的运维工作提供了指导和参考。
685 28
|
存储 安全 算法
三种常见的加密算法:MD5、对称加密与非对称加密的比较与应用
网络安全聚焦加密算法:MD5用于数据完整性校验,易受碰撞攻击;对称加密如AES快速高效,密钥管理关键;非对称加密如RSA提供身份验证,速度慢但安全。三种算法各有所长,适用场景各异,安全与效率需权衡。【6月更文挑战第17天】
3147 2
|
前端开发 Java 数据库连接
你不可不知道的JAVA EE 框架有哪些?
本文介绍了框架的基本概念及其在编程领域的应用,强调了软件框架作为通用、可复用的软件环境的重要性。文章分析了早期Java EE开发中使用JSP+Servlet技术的弊端,包括可维护性差和代码重用性低等问题,并阐述了使用框架的优势,如提高开发效率、增强代码规范性和可维护性及提升软件性能。最后,文中详细描述了几种主流的Java EE框架,包括Spring、Spring MVC、MyBatis、Hibernate和Struts 2,这些框架通过提供强大的功能和支持,显著提升了Java EE应用的开发效率和稳定性。
821 1
|
机器学习/深度学习 人工智能 自然语言处理
基于深度学习的自然语言处理模型优化策略
基于深度学习的自然语言处理模型优化策略
389 0
|
机器学习/深度学习 人工智能 算法
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
中草药识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
335 0
|
缓存 监控 架构师
Linux 性能分析工具汇总
Linux 性能分析工具汇总
415 0
|
存储 弹性计算 安全
阿里云服务器ECS详细介绍_优缺点说明
阿里云服务器是什么?云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务,云服务器可以降低IT成本提升运维效率,免去企业或个人前期采购IT硬件的成本,阿里云服务器让用户像使用水、电、天然气等公共资源一样便捷、高效地使用服务器。阿里云服务器具有安全、稳定、弹性升降配、高性能、易用可扩展等优势。阿里云百科来详细说下什么是阿里云服务器以及阿里云服务器的优缺点分析
423 0