解读《深入理解计算机系统 (CSAPP)》第 2 章 信息的表示和处理

简介: 信息的表示和处理,本章研究计算机上如何表示数字和其他形式数据的基本属性,计算机对这些数据执行操作的属性。

image.png

前言:📫 作者简介:小明java问道之路,专注于研究计算机底层,就职于金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的设计和架构📫

🏆 Java领域优质创作者、阿里云专家博主、华为云享专家🏆

🔥 如果此文还不错的话,还请👍关注点赞收藏三连支持👍一下博主哦

本文导读

本章研究计算机上如何表示数字和其他形式数据的基本属性,计算机对这些数据执行操作的属性。

一、计算机的编码原理

计算机将信息编码为位(比特),通常组织成字节序列。计算机具有不同放入编码方式用来表示整数、实数和字符。不同计算机模型在编码数字和多字节数据中的字节顺序是使用不同方式(约定)。下图是整数加法只有中间正常,如果是无符号,如下图image.png

二、计算机的进制(十六进制)

我们以 C 语言为例,以 0x 或者 0X 开头的是十六进制的值。字符‘A’~‘F’不区分大小写,也可以混合写。牢记 A、C、F 相对应的十进制值和二进制表示,可以很方便的转换。给定二进制去转换十六进制,首先从右往左分为 4 位一组,最左不满 4 位的就在前面用 0 补足。

当值 x 是 2 的非负整数 n 次幂时,也就是 x=2n,其 x 的二进制表示就是 1 后面跟 n 个 0。因为十六进制中数字 0 代表 4 个二进制 0,所以可以将 n 写成 i+4j(0<=i<=3)的形式,可以把 x 写成开头的十六进制数字为 1(i=0)、2(i=1)、4(i=2)、8(i=3),后面跟随者 j 个十六进制的 0。例如 x=2048=211,所有有 n=11=3+4*2,即二进制表示为 1000 0000 0000 得出其十六进制表示为 0x800。

三、计算机的编码补码

大多机器对整数使用补码编码,对浮点数使用 IEEE 标准 754 编码。

image.png

在相同长度的无符号和有符号整数之间进行强制转换时,C 语言遵循底层的位模式不变。

由于编码的长度有限,与传统整数和实数运算相比,计算机运算具有不同的属性。当超出表示范围时,有效长度能够引起数值溢出,当浮点数非常接近 0.0,从而转换成 0 时也会下溢。C 语言由于溢出 x*x 能够得到负数,但是也遵循位运算和算术运算,例如~x-1 等价于 -x。

浮点数表示通过将数字编码的数值为 x*2^y 的形式来近似地表示实数。

小结

CSAPP 一书的第二章信息的表示和处理,主要研究计算机上如何表示数字和其他形式数据的基本属性,计算机对这些数据执行操作的属性。

相关文章
|
6月前
|
存储 NoSQL 前端开发
【CSAPP】程序的机器级表示:基础知识
【CSAPP】程序的机器级表示:基础知识
91 0
|
9天前
|
存储
计算机组成原理(7)----CPU内部单总线数据通路
计算机组成原理(7)----CPU内部单总线数据通路
26 0
|
9天前
|
存储
计算机组成原理(5)----CPU的基本结构
计算机组成原理(5)----CPU的基本结构
27 0
|
存储 机器学习/深度学习 Shell
CSAPP学习笔记 - 计算机的概览
这本书应该不需要我过多介绍了,看这本书个人依赖了视频和书本对照学习,学习的进度很慢也比较痛苦,不知道多久可以更一期,做这个系列也算是鼓励自己加油学习。
63 0
|
存储
【深入理解计算机系统CSAPP】一文彻底理解数据在计算机内部的存储
【深入理解计算机系统CSAPP】一文彻底理解数据在计算机内部的存储
84 0
【深入理解计算机系统CSAPP】一文彻底理解数据在计算机内部的存储
【CSAPP】深入理解计算机系统 第一章 程序 1/26
【CSAPP】深入理解计算机系统 第一章 程序 1/26
76 0
【CSAPP】深入理解计算机系统 第一章 程序 1/26
|
编译器
【CSAPP数据段解析】汇编语言机械级编程
【CSAPP数据段解析】汇编语言机械级编程
87 0
【CSAPP数据段解析】汇编语言机械级编程
|
编译器 内存技术
【CSAPP】深入理解计算机系统 第九章 虚拟内存 动态链接 printf 17/26
【CSAPP】深入理解计算机系统 第九章 虚拟内存 动态链接 printf 17/26
58 0
【CSAPP】深入理解计算机系统 第九章 虚拟内存 动态链接 printf 17/26
|
Java Shell
【CSAPP】现代操作系统前几章
【CSAPP】现代操作系统前几章
78 0
【CSAPP】现代操作系统前几章
|
存储 自然语言处理 前端开发
解读《深入理解计算机系统 (CSAPP)》第 3 章程序的机器级表示
C语言机器级编程通过让编译器产生机器级程序的汇编代码表示,了解了编译器以及机器、数据类型和指令集
解读《深入理解计算机系统 (CSAPP)》第 3 章程序的机器级表示