多做题,通过考试没问题!

计算机体系结构

睦霖题库>大学试题(计算机科学)>计算机体系结构

以下是两段C语言代码, 函数arith()是直接用C语言写的,而optarith()是对arith()函数以某个确 定的M和N编译生成的机器代码反编译生成的。根据optarith(),可以推断函数arith()中M和N的值各是多少?

正确答案: 可以看出x*M和“int t=x;x<<=4;x-=t;”三句对应,这些语句实现了x乘15的功能(左移4位相当于乘以16,然后再减1),因此,M等于15; 
y/N与“if(y<0)y+=3;y>>2;”两句对应,功能主要由第二句“y右移2位”实现,它实现了y除以4的功能,因此N是4。而第一句“if(y<0)y+=3;”主要用于对y=–1时进行调整,若不调整,则-1>>2=–1而–1/4=0,两者不等;调整后–1+3=2,2>>2=0,两者相等。
答案解析:
进入题库查看解析

微信扫一扫手机做题