在计算机中只有二级进制 10进制跟16进制是为了让开发者便于理解而做出的转换
二进制在十进制的代表是
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
整个过程都是2的倍数
所以10进制转换为2进制只要不断的取余数即可
pow是为了在以10进制显示二级制数的情况下进行进位
如果没有pow 在运算的时候就会出现1 + 0 + 1 + 1这种情况出现 得出来的值只为3。
所以在运算第2位的时候就需要x10了 第三位就x100 第四位就x1000 以此类推
最后的结果就是1*1000+0*100+1*10+1=1011
由于在计算机中 所有数据都是以二进制存放的
所以直接用二进制来运算会方便很多int DecToBin(int a)//10进制转二进制
{
int i,n=0;
for(i=0;i<16;i++)//默认取int为16位 可以改成32位
{
n*=10;//跟pow一样进行进位
if(a&0x8000)//取出a的最高位 当为32位时0x8000修改成0x80000000即可
n++;//如果该位为1则+1
a<<=1;//a的值向左移动一位循环获取到全部位
}
return n;//返转换结果
}
这种方法在执行效率上提升了很多。
随便
有些地方需要使用到二进制的这里有个宏定义 方便二进制直接转换为16进制#define B(n) (((n>>21)&0x80)|((n>>18)&0x40)|((n>>15)&0x20)|((n>>12)&0x10)|((n>>9)&0x08)|((n>>6)&0x04)|((n>>3)&0x02)|((n)&0x01))
#define BinToHex(n) B(0x##n##l)
执行效果: