【发布时间】:2014-04-01 22:10:02
【问题描述】:
所以在阅读 K&R “The C Programming Language”时,我遇到了这个练习:
问题:编写一个函数 setbits(x,p,n,y),返回 x,从位置 p 开始的 n 位设置为最右边的 n 位y,其他位保持不变。
我不明白的是如何计算位位置,我应该从1开始还是从0开始?
例如,考虑到练习,它将是:
与n = 3, p = 4, X= 00100000 //32, Y= 00001011 //11:
p
n n n
X= 0 0 1 0 0 0 0 0 // Number 32
pos: 8 7 6 5 4 3 2 1
Y= 0 0 0 0 1 0 1 1 // Number 11
n n n
这将导致:
p
n n n
0 0 1 0 0 1 1 0 // Number 38
也可能是:
p
n n n
X= 0 0 1 0 0 0 0 0 // Number 32
pos: 7 6 5 4 3 2 1 0
Y= 0 0 0 0 1 0 1 1 // Number 11
n n n
这将导致:
p
n n n
0 0 1 0 1 1 0 0 // Number 44
所以我的问题是:计算位位置最常用的方法是什么?应该从 0 开始还是从 1 开始?
感谢您的帮助!
【问题讨论】: