2015-03-14 3 views
-3

Я хочу получить пары бит из десятичного числа (например, 75 -> 0b01001011) и сохранить их в отдельных переменных. Поэтому для 75 я ожидаю получить четыре переменные с 1,0,2,3 значениями. Я ищу лучшее решение для повышения производительности.преобразование между десятичным числом и двоичным числом в C

Вот мой тест:

uint16_t k,kk,kkk,kkkk; 
unsigned char a,b,c,d; 
k=kk=kkk=kkkk = 75; 
a = k & ~(0b11111100); 
b = (kk & ~(0b11110011)) >> 2 ; 
c = (kkk & ~(0b11001111)) >> 4; 
d = (kkkk & ~(0b00111111)) >> 6; 

Можете ли вы найти лучше и быстрее решение? Я имею в виду, что недостатком этого решения является то, что я должен создать копии исходной переменной, потому что она изменяется каждый раз, когда я устанавливаю одну из переменных a, b, c, d.

+2

Там нет такого понятия, как "десятичный тип номера". Представление не является частью понятия «число». –

+0

Этот вопрос кажется слишком сложным и запутанным. Похоже, вы просто хотите создать базовую цифру числа. Просто продолжайте делить на 4 и вычислите остаток. –

+0

Связанный: http://en.wikipedia.org/wiki/Numeral_system – alk

ответ

0

Этот подход CCA 4xfaster:

uint16_t k; 
unsigned char a,b,c,d; 
k = 75; 
a = k & 0b11; 
b = (k & 0b1100) >> 2 ; 
c = (k & 0b110000) >> 4; 
d = (k & 0b11000000) >> 6; 
Смежные вопросы