C语言实现二进制与十进制的互转(带小数)
直接用C语言实现,没有数据结构
需要看栈和队列版的看这里
C语言使用栈和队列实现二进制与十进制的互转(带小数)
代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>/**
* 整数部分十进制转二进制
*/
void convertIntegerToBinary(long n)
{long b,k,i;long remainder[30];k=0;while(n != 0){b = n / 2;k++;remainder[k]= n - b * 2;n = n / 2;};for (i = k; i >= 1; i--){printf("%d",remainder[i]);}
}/**
* 小数部分十进制转二进制
*/
void convertDecimalToBinary(double n)
{int i=0;if (n == 0) {return;}printf(".");for(i=0; i<18; i++){if(n*2>1){n=n*2-1;printf("1");}else{n=n*2;printf("0");}}printf("\n\n");
}/**
* 十进制转二进制
*/
void digitalToBinary(double input) {long integer = input / 1;double decimal = input - (double)integer;convertIntegerToBinary(integer);convertDecimalToBinary(decimal);
}/**
* 二进制转十进制
*/
void binaryToDigital(char binary[]) {char ch;long long integer = 0;double decimal = 0.0; int i = 0, integerNum = 0, decimalNum = -1;bool hasDecimal = false;// 计算整数和小数所占位数 for (; i < 30; ++i) {ch = binary[i];if (ch == 0) {break;}if (!hasDecimal && ch != '.') {++integerNum;} else {hasDecimal = true;++decimalNum;}}// 计算整数部分 i = integerNum;for (; i > 0 ; --i) {if (binary[i - 1] == '1') {integer += pow(2, integerNum - i);}}// 计算小数部分 if (hasDecimal) {i = integerNum + 1;for (; i <= integerNum + decimalNum; ++i) {if (binary[i] == '1') {decimal += (double)pow(2, integerNum - i);}}printf("%lf", (double)integer + decimal);} else {printf("%lld ", integer);} printf("\n\n");
}int main() {double digital;char binary[30]; int n;while(1){printf("\n1:十进制转换二进制,2:二进制转换十进制,3:退出\n");scanf("%d",&n);// getchar();switch(n){case 1:printf("请输入待转的十进制数:\n");scanf("%lf", &digital);printf("转换为二进制值为:\n");digitalToBinary(digital);break;case 2:printf("请输入待转的二进制数:\n");scanf("%s", binary);printf("转换为十进制值为:\n");binaryToDigital(binary);break;case 3:printf("您已退出\n");exit(0);default:printf("error\n");}}
}
C语言实现二进制与十进制的互转(带小数)相关推荐
- c语言实现二进制八进制十进制和十六进制的相互转化
c语言实现二进制八进制十进制和十六进制的相互转化 十进制转其他进制 (该程序以十转二为例) #include<stdio.h> void change(int n)//利用递归将每次的余数 ...
- c语言中二进制与十进制怎么转换器,十进制与二进制如何互转换?编程语言教会你进制编程...
计算机语言中经常使用到进制之间的转换,本文介绍使用不同编程语言来如何实现十进制与二进制相互之间的转换?不同编程语言中进制转换原理是一样的. 十进制转换二进制原理:采用除2取余,逆序排列输出. 实现:用 ...
- 【Java 基础语法01】 举例描述二进制和十进制的互转
本文笔记,参考课程图文 二进制和十进制互转 0.背景 人们生活:十进制数字 计算机:二进制 二进制:0.1两个数字,逢二进一位 示例: 1+1=10 逢二向前进一位 倒数第一位代表2的零次方=1 倒数 ...
- C 语言实例 - 二进制与十进制相互转换
实例 - 二进制转换为十进制 #include <stdio.h> #include <math.h>int convertBinaryToDecimal(long long ...
- c 语言 二进制 十进制,C 语言实例 - 二进制与十进制相互转换
实例 - 二进制转换为十进制 #include #include int convertBinaryToDecimal(long long n); int main() { long long n; ...
- 二进制和十进制怎么互转
二进制的基本概念 在学习二进制怎么转十进制之前,我们要先认识一下二进制.(如果你已经学会了,可以跳过) 二进制是一种计算机可识别的源码,由数字1和0组成.每个数字都占据计算机内存里的1 b(bit), ...
- C语言的二进制转十进制
4 - 二进制转十进制 给你一个二进制的数,请输出其十进制对应的数字. 原题链接 输入 输入一个二进制的非负整数N,保证在int范围内. 输出 输出转换后的数 样例 输入复制 1011 输出复制 11 ...
- 怎样快速对二进制和十进制进行互转化——IP地址规划与设计总结
最近一直在看全国计算机三级网络技术这本书,看到第二章的时候,不免会遇到计算机中最常用的进制转换问题.什么IP地址,什么子网掩码,什么网路地址,什么广播地址都会用到二进制和十进制的相互转化,而且最常用的 ...
- c语言中二进制转十进制详解
1.字符与字符代码 字符与字符代码并不是任意写一个字符,程序都能识别的.例如代码圆周率的π在程序中是不能被识别的,只能使用系统的字符集中的字符,目前大多数系统采用ASCII字符集. ...
最新文章
- linux下的ps aux | grep -c php-fpm 与netstat -napo |grep php-fpm | wc -l 命令
- 数据库监听。数据库一次notify,Activity多次接收
- CMM (软件工程与集成产品开发)
- 辰星计划2021 | 旷视春季实习生招募—空中宣讲会第二弹来了!
- Java黑皮书课后题第10章:*10.11(几何:Circle2D类)定义Circle2D类
- zabbix中php信息缺失之后的安装
- 2021-2022ACM赛季小总结
- linux后台开发具备能力集锦
- iOS博客 视频课程网站
- AudioContext
- window ftp open命令打不开_Centos7上搭建ftp
- NYOJ水题--最短街区问题
- mysql的dql_Mysql-DQL
- ptc转4-20mA热电阻变送器NI1000 NTC转0-10ma输出PWM
- PyQt主窗口、对话框
- 2018 谷歌 Google I/O 简介 总结
- XX系统功能用例整体设计思路
- (转)牛顿和哈雷的故事(重点看一下牛顿老时候)
- Greedy search与beam search
- 2022-07 Pandas进阶复盘汇总