为什么c语言采用解释方式将源程序转换为二进制的目标代码?,c语言,源代码,进制转换,解释源代码...

这篇博客探讨了计算机中十进制转换为二进制和十六进制的方法,重点介绍了如何通过取余数和位移操作高效地实现这种转换。文中提供了一个C语言的函数`DecToBin`用于将十进制数转化为二进制,并通过宏定义`B`和`BinToHex`实现了二进制到十六进制的快速转换。这些方法提高了转换的执行效率,对于理解和处理二进制数据具有实际意义。
摘要由CSDN通过智能技术生成

在计算机中只有二级进制 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)

执行效果:

2b76a3ce05f0b1e5334c2aa0db1ef7bd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值