-1

我需要实施,但我不确定我该如何做,因为我对此完全陌生。具有原型的名为 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 
4

1 回答 1

0

我认为您想研究按位and和位移运算符。如果问题是要求代码应该在具有不同大小int类型的平台上工作,那么最后一块拼图可能是 sizeof() 运算符。

于 2013-10-09T02:17:38.610 回答