更具体地说,我的作业有一些限制,不允许我使用乘法和超过 2 个 if-else 语句。该方法应采用一个数字,例如 0xAAA5,并用给定的半字节(例如 0x1)替换其中一个 4 位部分。这是我现在的代码:
public static int setNibble(int num, int nibble, int which) {
num = num & (0xFFFF - (0xF << (4 * which)));
num = num | ( (nibble) << (4 * which) );
return num;
}
我基本上只想左移 which*4,但如果没有乘法或某种 if-else 语句,我无法弄清楚如何做到这一点。