深入理解计算机系统第二版习题解答CSAPP 2.6

时间:2022-02-28 19:39:18

使用打印字节的方式可以知道十进制数12345的十六进制为0x00003039,十进制浮点数12345.0的十六进制为0x4640E400。

转换为二进制为

 /*
0 0 0 0 3 0 3 9
0000000000000000001
*************
4 6 4 0 E 4 0 0
0100011000000000000 */

移动后有13位匹配。

已知十进制数3510593的十六进制为0x00359141,十进制浮点数3510593.0的十六进制为0x4A564504。

A.写出上面两个数对应的二进制表示。

B.移动两个二进制串的相对位置,使得它们匹配的位数最多。有多少位匹配?

C.串中的什么位置不匹配。

1 /*
2 0 0 3 5 9 1 4 1
3 00000000001101011001000101000001
4 *********************
5 4 A 5 6 4 5 0 4
6 010010100101011001000101000001
7
8 */

A.

 /*
0x00359141
0000 0000 0011 0101 1001 0001 0100 0001 0x4A564504
0100 1010 0101 0110 0100 0101 0000 0100
*/

B.21位匹配

C.直观来说:对浮点数来说前9位及最后2位不匹配。

对整型数来说从高位到第1位不为0的位置不匹配。

后续了解浮点数存储会更加明了。