CSAPP

chapter 2

整型数值表示

将负数$-x$表示为二进制的方式为: 首先用二进制表示出$+x$, 按位取反后加1即可.

反过来, 依据二进制计算其表示的数字的方法为: 首先依据最高位判断符号, 若最高位为$0$, 则直接利用二进制转十进制确定; 若最高位为$1$, 则确定符号为负, 其绝对值由减一后按位取反, 再用二进制转十进制确定.

练习

假定INT类型为1字节有符号整数, 则数值表示范围为$[-2^7,2^7-1]=[-128,127]$.

+10 = 00001010 => 11110101 => -10 = 11110110 => 256 + (-10) = 246 = 11110110

11110110 => - ~(11110101)=>- 00001010 => -10

浮点型数值表示

chapter 3

//mstore.c
long mult2(long, long);
void multstore(long x, long y, long *dest) {
long t = mult2(x, y);
*dest = t;
}

显示.o文件里的部分机器码:

显示.s文件里的内容:

反汇编mstore.o:

Last updated

Was this helpful?