深入理解计算机系统(第二版)

我理解不动这一点 ,感觉有毛病(铅笔画框框那)(37页中间部分)图片

Charter 2编译系统以一个C语言文件hello.c说明计算机的编译过程
预处理器:将以#开头的文件插入进来
编译器:将其翻译成汇编程序,汇编语言为不同的高级语言提供一个统一的输出
汇编器:将汇编程序翻译成机器语言
链接器:将程序需要的预先编译好的目标文件(上图如printf.o)链接进来生成可执行的目标文件......
答案就在这里:深入理解计算机系统(第二版)
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

有什么地方不理解?这里位移是二进制的,移动一位相当于乘2,除2。
然后输出是16进制的,看的时候要转换下。

当移位数k>占位数w时,实际位移量就是通过计算k mod w得到的
对于int lval=0xFEDCBA98<<32 32mod32=0移位0,仍为0xFEDCBA98
对于int aval= 0xFEDCBA98<<36 36mod32=4移位4,对于16进制数而言只需右移一个数位即可
(C语言中对有符号数使用算数右移,所以空出的占位由1111填充)所得结果为0xFFEDCBA9
对于unsigned uval= 0xFEDCBA98<<40 40mod32=8,对于16进制数而言只需右移两个数位即可
(C语言中对于无符号使用逻辑右移,所以空出的占位由0000 0000填充)所得结果为0x00FEDCBA

PS.第一次在csdn上回答问题,也是在经历了很多低谷之后打算重新努力的一条道路,要加油呀!
在此发发牢骚,见谅