问题描述:

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

代码实现:

实际上可以利用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;

}

输出结果

除了用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;

}

输出结果

代码思考:

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

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

//将剩余位数上的字符都置为‘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语言十进制转二进制——实现和思考相关推荐

  1. c语言 10 -n次方,【零基础搞定C语言——10】

    前言:本期的主要内容是C语言中的操作符. 算数操作符 对于除号而言想要打印小数?如何做? 1.输出为1 int a = 6 / 5; printf("%d\\n", a); 2.输 ...

  2. c语言10以内的加法程序代码,怎样用c语言编写个能随机出10以内加减法题目的程序...

    #include "stdio.h" #include "stdlib.h" #include "time.h" #include &quo ...

  3. c语言10个评委打分去掉一个最高分,用C语言编程:歌手大奖赛有10名评委打分,去掉一个最高分、去掉一个最低分,求选手的平均分。...

    满意答案 xxffccc 2013.10.29 采纳率:42%    等级:12 已帮助:8342人 #include #include void main() { int max(float b[] ...

  4. C语言指针基础知识点(七)--通过指针引用字符串

    指针系列目录   C语言指针基础知识点(一)–指针及指针变量   C语言指针基础知识点(二)–指针变量的引用   C语言指针基础知识点(三)–指针变量作为函数参数   C语言指针基础知识点(四)–通过 ...

  5. c语言中10转8和16的转换,(C语言)10进制转换2,8,16进制

    (C语言)10进制转换2,8,16进制 作者:vinseven #include"stdio.h" #include"conio.h" #include&quo ...

  6. 16位转10位c语言,10进制数转换为16位二进制数

    写在前面: 题解是对具体题目的编程实现,不会具体讲解C语言语法.请先大致学习好语法,自己敲敲代码后再看题解(上来就直接看题解的习惯不好哟~).在每一题的题解之前,会列出本题涉及到的语法知识供参考,可以 ...

  7. C语言 10进制 以8进制和16进制显示, #处理显示前导符

    C语言 10进制 以8进制和16进制显示, #处理显示前导符 #include<stdio.h> void main() {int a=20,b=30;int c=a+b;printf(& ...

  8. go语言10进制与16进制转换

    野旷天低树,江清月近人 目录 16进制字符串转16进制int64 16进制字符串转10进制字符串 10进制字符串转16进制字符串 10进制字符串转换10进制int64 16进制字符串转16进制int6 ...

  9. c语言 10进制 按位与,位运算小结(按位与、按位或、按位异或、取反、左移、右移)...

    原标题:位运算小结(按位与.按位或.按位异或.取反.左移.右移) 位运算不管是在Java语言,还是在C语言中,或者其他语言,都是经常会用到的,所以本文也就不固定以某种语言来举例子了,原始点就从0.1开 ...

最新文章

  1. ECShop后台管理菜单修改
  2. 判断对象存活方法及回收方法
  3. 如何在Linux上使用netstat命令查证DDOS***
  4. 一步一步教你在CentOS6.0下安装NS2(ns-allinone-2.34.tar.gz)模拟仿真工具
  5. 《球球大作战》源码解析——(1)运行起来
  6. 操作系统第一章操作系统引论例题及答案
  7. VISA+SCPI实现安捷伦或是德信号源+频谱仪程控
  8. 【柒】企业分析利器——强大企业模型
  9. STM32 SPI 主模式下配置(神州三号开发板spi.c解析上)
  10. Java事务处理总结
  11. postman“在Tests中通过data.token获取token失败”的解决方法
  12. Win10系统重装方法 简单实现一键重装win10系统
  13. Gradle‘s dependency cache may be corrupt (this sometimes occurs after a network connection timeout)
  14. 【BLE】蓝牙Profile
  15. Android机器人纯HTML
  16. 【网络安全】上网行为管理
  17. ui设计移动端字体适配_移动端界面设计之尺寸篇(更新)
  18. Platform Dependency
  19. Android 数据库对比
  20. 【Android】给Android Studio设置代理

热门文章

  1. 去年日本国内汽车销售榜单公布
  2. 【Java二手交易平台】
  3. AMD显卡催化剂13.3 Beta 3对Linux用户可用
  4. 稳定好看的Linux桌面,漂亮的桌面 哪一种Ubuntu官方版本最适合你?
  5. unity3D快捷键大全
  6. 精益生产(Lean manufacturing)
  7. 企业— elk开元日志分析平台之elasticsearch简介及其部署
  8. 产业互联网下半场,SaaS平台的机遇与挑战
  9. SAP MIGO 传输过账时接收物料字段控制
  10. APM 飞控文档翻译1