将小于1024的十进制转换为两个变量,一个8位,另一个变换为2,使用C

时间:2011-06-20 02:23:31

标签: c microcontroller mikroc

嗨,我正在使用MikroC编程一个微控制器,我有一个小于1024(2 ^ 10bit)的变量,我需要将int value;转换为unsigned char value8bits;并将其放在最不重要的位置unsigned char value2bits;

中的位

我其实在考虑使用>>位移不知道怎么回事?你觉得怎么样?

1 个答案:

答案 0 :(得分:5)

10bitvar = 956;

8bitvar = (10bitvar >> 2) & 0xff;
2bitvar = (10bitvar & 0x03);



10bitvar        =    1 1 1 0 1 1 1 1 1 0
(10bitvar >> 2) =    ? ? 1 1 1 0 1 1 1 1
    &                    & & & & & & & &
  0xff          =        1 1 1 1 1 1 1 1      
                        ----------------
8bitvar                  1 1 1 0 1 1 1 1


10bitvar        =    1 1 1 0 1 1 1 1 1 0
    &                    & & & & & & & &
  0x03          =        0 0 0 0 0 0 1 1      
                        ----------------
2bitvar                  0 0 0 0 0 0 1 0