我有二进制数1010 1011.我知道这是十六进制的AB,我知道A = 10,B = 11十进制。但是如何从十进制的10和11到最终的171?
使用hex我会做
A B
0xAB = (10 * 16^1) + (11 * 16^0) = 171
我可以用十进制数做类似的事情从10和11到171吗?基本上,我只是在寻找一种快速的方法来转换任何二进制数而无需计算器。
答案 0 :(得分:4)
我认为没有比A×16 + B更容易的方法。
答案 1 :(得分:0)
根据您要执行的操作以及您使用的语言,您可以使用shift-left运算符并将值一起添加。
在C ++中:
unsigned short val_a = (0x1010 << 4);
unsigned short val_b = 0x1011;
unsigned short result = val_a + val_b;
结果仍然是unsigned short int。
答案 2 :(得分:0)
在C中你可以换乘,如果乘法从A和B得到AB:
int number = A << 4 + B;
如果您将A存储为1010(十进制)而B存储为1011,则可以转换:
int bin2dec(unsigned int s){
int v, p;
for (v = 0, p = 1; s > 0; s=s>>1) { v = v+p*(s%2); v++; p*=2;}
return v;
}
int number = bin2dec(A) << 4 + bin2dec(B);