C中十进制数和二进制数之间的转换

时间:2015-03-14 12:24:43

标签: c binary decimal

我想从十进制数中获取位对(例如75 - > 0b01001011)并将它们保存在单独的变量中。因此,对于75,我期望获得具有1,0,2,3个值的四个变量。我正在寻找最佳性能解决方案。

这是我的测试:

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变量之一时它都会被更改。

1 个答案:

答案 0 :(得分: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;