我正在查看cs61c (ucb)的问题。我有以下方法:
void lfsr_calculate(uint16_t *reg) {
uint16_t result = compute_bit_val(*reg);
printf("reg value: %d", *reg);
printf("bit val result: %d", result);
printf("bit val result shifted: %d", result << 16);
*reg >>= 1;
printf("bit val result shifted plus zero: %d", *reg + (result << 16));
*reg = (uint16_t) *reg + (result << 16);
printf("new reg: %d", *reg);
}
如果 *reg 为 1,我的方法 compute_bit_val 返回 1。打印输出为
1
1
65536
65536
**0**
?!?!?! 我正在拔头发,我不知道为什么最后一部分为零,由于某种原因,作业不起作用。我在有和没有强制转换的情况下都试过了,它给出了相同的结果。