我需要实施,但我不确定我该如何做,因为我对此完全陌生。具有原型的名为 get_values 的函数:
void get_values(unsigned int value, unsigned int *p_lsb, unsigned int *p_msb,
unsigned int *p_combined)
该函数计算 value 参数的最低有效字节和最高有效字节。此外,这两个值是结合在一起的。对于这个问题:
一个。您不得使用任何循环结构。湾。您不能使用乘法运算符(* 或 *=)。C。您的代码必须适用于任何大小(4 字节、8 字节等)的无符号整数。d。要组合这些值,请将最低有效字节附加到最高有效字节。e. 您的实施应该是有效的。
以下驱动程序(和相关输出)提供了一个使用您预期编写的函数的示例。请注意,在此示例中,unsigned int 为 4 个字节,但您的函数需要使用任何大小的 unsigned int。
Driver
int main() {
unsigned int value = 0xabcdfaec, lsb, msb, combined;
get_values(value, &lsb, &msb, &combined);
printf("Value: %x, lsb: %x, msb: %x, combined: %x\n", value, lsb, msb, combined);
return 0;
}
Output
Value: abcdfaec, lsb: ec, msb: ab, combined: abec