接题目:
假设一个w位的数据类型。代码可以包含对参数j和k的引用,它们分别表示j和k的值,但是不能使用表示w的参数。
开始作答 官方答案(已验证)
这里应该是利用全1的移位
A.-1 << k
B.~(-1 << k) << j
#include <stdio.h>
#include <assert.h>
/* Assume 0 <= k < w */
int A(int k) {
return -1 << k;
}
/* Assume 0 <= j,k < w */
int B(int k, int j) {
return ~A(k) << j;
}
int main(int argc, char* argv[]) {
assert(A(8) == 0xFFFFFF00);
assert(B(16, 8) == 0x00FFFF00);
return 0;
}