我是靠谱客的博主 等待睫毛膏,最近开发中收集的这篇文章主要介绍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]);

}

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

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

最后

以上就是等待睫毛膏为你收集整理的c语言10进制转2进制字符串,C语言十进制转二进制——实现和思考的全部内容,希望文章能够帮你解决c语言10进制转2进制字符串,C语言十进制转二进制——实现和思考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部