c语言10进制转2进制字符串,C语言十进制转二进制——实现和思考

问题描述:

实现一个函数:能使十进制数转为二进制数

代码实现:

实际上可以利用C语言中的itoa函数 [itoa函数是C/C++的非标准函数,不保证被所有编译器正常使用]

具体用法:char * itoa ( int value, char * str, int base );

value是待转换的十进制数,str用于存储转换后的字符串,base表示转换成多少进制

#include

#include

int main()

{

int a=30;

char str[10];

itoa(a,str,2);

printf("%s",str);

return 0;

}

851410c8a296

输出结果

除了用C语言自带函数外,也可以自己写函数,以下是我写的一个使用短除法的函数

void PositiveIntToBinary3(int value,int bits)

{

char binary[bits];

int index=0;

while(value)

{

if(index>=bits)

{

printf("error:over the limit!");

return;

}

value%2 ? binary[index++]='1' : binary[index++]='0';

value/=2;

}

//将剩余位数上的字符都置为‘0’

for(int i=index;i

binary[i]='0';

//倒序打印出字符数组

for(int i=bits-1;i>=0;i--)

printf("%c",binary[i]);

}

参数bits用于指定输出的二进制的最大长度,若value转化为二进制后长度大于bits,则会显示error:over the limit!

使用该函数:

int main()

{

PositiveIntToBinary3(246,16);

return 0;

}

851410c8a296

输出结果

代码思考:

打完代码后认真看一看这段代码还有什么可以简化的地方。

在上面的代码中,我发现:

//将剩余位数上的字符都置为‘0’

for(int i=index;i

binary[i]='0';

这个填充剩余字符的部分可以由已有的while循环实现。

改进版如下:

void PositiveIntToBinary4(int value,int bits)

{

char binary[bits];

int index=0;

while(index

{

value%2 ? binary[index++]='1' : binary[index++]='0';

value/=2;

}

if(value)

{

printf("error: over the limit!");

return;

}

for(int i=bits-1;i>=0;i--)

printf("%c",binary[i]);

}

我并不是什么聪慧的人,但我想写出好的代码。只有不断尝试和练习才能不断进步。如果你有更好的实现方法或者发现那些地方可以写的更加简洁高效的话,请告诉我,大家共同学习。

这是我在简书第一次写文章,希望这篇文章的内容能帮助您。本人水平有限也有请各位见谅。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值