阅读以下关于嵌入式C语言编程方面的问题,回答问题1至问题3,将答案填入对应栏内。 [说明] 嵌入式C语言编程中常涉及位运算、宏定义的问题,以及大端方式(Big-endian)、小端方式(Little-endian)的访问问题。 嵌入式系统中常要求

admin2012-01-21  34

问题   阅读以下关于嵌入式C语言编程方面的问题,回答问题1至问题3,将答案填入对应栏内。
[说明]
   嵌入式C语言编程中常涉及位运算、宏定义的问题,以及大端方式(Big-endian)、小端方式(Little-endian)的访问问题。
  嵌入式系统中常要求用户对变量或寄存器进行位操作。下面的两个函数分别为设置和清除变量a的第5位。请使用下面的宏定义BIT5按要求对变量a进行相应的处理。在函数set_bit5中,用位或赋值操作(|=)设置变量a的第5位,在函数clear_bit5中,用位与赋值操作(&=)清除变量a的第5位。
   #define BIT5  (0x01<<5)
   static int a;
   void set_bit5(void)
   {
     ①  ;    /*设置变量a的第5位*/
   }
   void clear_bit5(void)
   {
     ②  ;    /*清除变量a的第5位*/
   }

选项

答案①a|=BIT5 ②a&=~BIT5

解析 在32位机中,宏BIT5所定义的数值的二进制形式为00000000 00000000 00000000 00100000,~BIT5的二进制形式为11111111 11111111 11111111 11011111。在位运算中,任何值与1进行或操作之后结果都为1,与0进行或操作之后结果还是原数。同样,任何值与0进行与操作之后结果都为0,与1进行与操作之后结果还是原数,所以通过位的或操作可以将一个数值中的某位设置为1,通过与操作方式可以将一个数值中的某位设置为0。a|=BIT5将a的第5位置1,其他位不变,a&=~BIT5将a的第5位置0,其他位不变。
转载请注明原文地址:https://jikaoti.com/ti/EOI7FFFM
0

最新回复(0)