将二进制转换为hex到小数
我有二进制数1010 1011.我知道这是hex的AB,我知道A = 10,B = 11十进制。 但是如何从十进制的10和11到最终的171?
用hex我会做的
AB 0xAB = (10 * 16^1) + (11 * 16^0) = 171
我可以用十进制数做类似的事情从10和11到171吗? 基本上,我只是在寻找一种快速的方法来转换任何二进制数而无需计算器。
我不认为有比A×16 + B更容易的方法。
根据您要执行的操作以及您使用的语言,您可以使用shift-left运算符并将值相加。
在C ++中:
unsigned short val_a = (0x1010 << 4); unsigned short val_b = 0x1011; unsigned short result = val_a + val_b;
结果仍然是unsigned short int。
在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);