现在我正在阅读《计算机系统:程序员视角》这本书。
书中的一个问题是对有符号整数执行逻辑右移,我不知道如何开始。
以下是书中的实际问题:
填写以下 C 函数的代码。
函数
srl
使用算术右移(由 value 给出xsra
)执行逻辑右移,然后执行不包括右移或除法的其他操作。函数
sra
使用逻辑右移(由 value 给出xsrl
)执行算术右移,然后执行不包括右移或除法的其他操作。您可以使用计算
8*sizeof(int)
来确定w
数据类型中的位数int
。移位量的k
范围可以从0
到w − 1
。unsigned srl(unsigned x, int k) { /* Perform shift arithmetically */ unsigned xsra = (int) x >> k; . . . } int sra(int x, int k) { /* Perform shift logically */ int xsrl = (unsigned) x >> k; . . . }
我希望你现在明白这个问题。