深入理解计算机系统 笔记——第二章

第二章 信息的表示和处理

三种重要的数字表示

  • 无符号(unsigned),基于传统的二进制表示法,表示大于等于零的数字
  • 补码(two's complement),表示有符号整数的最常见的方法
  • 浮点数(floating point),表示实数的科学计数法的以2为基数的版本

整数的表示虽然只能编码一个相对较小的数值范围,但是这种表示是精确的;而浮点数虽然能够编码一个较大的数值范围,但是这种表示只是近似的。

建议

程序员应该具有对计算机运算与整数和实数运算之间的关系有清晰理解。
大量的计算机安全漏洞往往都是从计算机算术运算的细节出发的,我们需要去了解程序的底层工作原理以及计算机是如何产生不良的行为的。

2.1 信息存储

指针存在两个方面:值和类型。值表示某个对象的位置,类型表示对应位置上存储对象的类型。

十六进制表示法

练习题2.1

完成下面的数字转换
A. 将0x39A7F8转换为二进制。
B.将二进制1100 1001 0111 1011转换为十六进制。
C.将0xD5E4C转换为二进制
D.将二进制10 0110 1110 0111 1011 0101转换为十六进制。

解析

A. 0011 1001 1010 0111 1111 1000
B. 0xC97B
C. 1101 0101 1110 0100 1100
D. 2 6 E 7 B 5

练习题2.2

填写下表中的空白项,给出2的不同次幂的二进制和十六进制表示:
n 2n(十进制) 2n(十六进制)
9 512 0x200
19
16 384
0x10000
17
32
0x80

解析

n 2n(十进制) 2n(十六进制)
9 512 0x200
19 524 288 0x80000
14 16 384 0x4000
16 65 536 0x10000
17 131 072 0x20000
5 32 0x20
7 128 0x80

练习题2.3

一个字节可以用两个十六进制数字来表示。填写下表中缺失的项,给出不同字节模式的十进制、二进制和十六进制
十进制 二进制 十六进制
0 0000 0000 0x00
167
62
188
0011 0111
1000 1000
1111 0011
0x52
0xAC
0xE7

解析

十进制 二进制 十六进制
0 0000 0000 0x00
167 1010 0111 0xA7
62 0011 1110 0x3E
188 1011 1100 0xBC
55 0011 0111 0x37
136 1000 1000 0x88
243 1111 0011 0xF3
82 0101 0010 0x52
172 1010 1100 0xAC
231 1110 0111 0xE7

练习题2.4

不将数字转换为十进制或者二进制,试着解答下面的算术题,答案要用十六进制表示。
提示:只要将执行十进制加法和减法所使用的方法改成以16为基数。
A. 0x503c+0x8=
B. 0x503c-0x40=
C. 0x503c+64=
D. 0x50ea-0x503c=

解析

A. 0x5044
B. 0x4ffc
C. 0x507c
D. 0xae

字数据大小

posted @ 2023-07-12 16:09  木木亚伦  阅读(35)  评论(0编辑  收藏  举报