第 2 章家庭作业:2.55~2.60
第 2 章家庭作业:2.55~2.60
家庭作业 2.55(★)在你能够访问的不同机器上,使用 show_bytes(文件 show-bytes.c)编译并运行示例代码。确定这些机器使用的字节顺序。
家庭作业 2.56(★)试着用不同的示例值来运行 show_bytes 的代码。
家庭作业 2.57(★)编写程序 show_short、show_long 和 show_double,它们分别打印类型为 short、long 和 double 的 C 语言对象的字节表示。请试着在几种机器上运行。
家庭作业 2.58(★★)编写过程 is_little_endian,当在小端法机器上编译和运行时返回 1,在大端法机器上编译运行时则返回 0。这个程序应该可以运行在任何机器上,无论机器的字长是多少。
家庭作业 2.59(★★)编写一个 C 表达式,它生成一个字,由 x 的最低有效字节和 y 中剩下的字节组成。对于运算数 x = 0x89ABCDEF 和 y = 0x76543210,就得到 0x765432EF。
家庭作业 2.60(★★)假设我们将一个 w 位的字中的字节从 0(最低位)到 w/8-1(最高位)编号。写出下面 C 函数的代码,它会返回一个无符号值,其中参数 x 的字节 i 被替换成字节 b:
unsigned replace_byte(unsigned x, int i, unsigned char b);以下示例,说明了这个函数该如何工作:
replace_byte(0x12345678, 2, 0xAB) --> 0x12AB5678
replace_byte(0x12345678, 0, 0xAB) --> 0x123456AB