преобразовать десятичное число, которое меньше 1024, в две переменные, одну с 8 битами и другую с 2, используя C - PullRequest
1 голос
/ 20 июня 2011

привет, я программирую микроконтроллер, используя MikroC, и у меня есть эта переменная, которая меньше 1024 (2 ^ 10 бит), и мне нужно было преобразовать это int value; в unsigned char value8bits; и поместить младшие значащие биты в unsigned char value2bits;

Я действительно думал об использовании >> сдвига битов, еще не знаете как? так что ты думаешь?

1 Ответ

5 голосов
/ 20 июня 2011
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          
...