编程实现进制转换
① 编程实现:输入一个十进制数,转换成对应的二进制数、八进制数和十六进制数并输出。
1、#include<iostream>
using namespace std;
int main()
{
int a,b,c,d;
cout<<"请输入待转换的数:";
cin>>a;
//二进制分别计算每一位
if(a==0)cout<<a;
b=a;c=0;d=1;
while(b!=0)
{
c+=(b%2)*d;//依次把b除以2的余数写在c的对应位置上
b=b/2;
d*=10;
}
cout<<c<<endl;
//八进制和十六进制使用格式化输出此扰即可,oct表示八进制,hex表示十六进制
cout<<oct<<a<<endl;
cout<<hex<<a<<endl;
}
2、main()
{ int a,i;char x[16];
float b;
scanf("%d",&a);
printf("八进制为%o,十六进制为%x",a,a);
for(i=0;i<=15;i++)
{b=a/2.0;
a=a/2;
if(b==(float)a) x[15-i]='0';
else x[15-i]='1';
}
printf("二进制为%s",x);
}
(1)编程实现进制转换扩展阅读:
编译方式下,首先通过一个对应于所用程序设计语言的编译程序对源程序进行处理,经过对源程序的词法分析、语法分析、语意分析、代码生成和代码优化等阶段将所处理的森返旦源程序转换为用二进制代码表示的目标程序,然后通过连接程序处理将程序中所用的世搏函数调用、系统功能调用等嵌入到目标程序中,构成一个可以连续执行的二进制执行文件。调用这个执行文件就可以实现程序员在对应源程序文件中所指定的相应功能。
② 请用Python语言编程实现由十进制数到二进制数的转换。
#include <stdio.h>
int main()
{
int a=0,b=0,c=0;
printf("请输入一个二进制数:");
scanf("%d",&a);//这里我就不对输入进行检查了
for(int i=0;;i++)
{
if(a==0)
break;
b=a%2;
a=a/10;
for(int j=i;j>0;j--)
{
if(b==0)
break;
else
b=b*2;
}
c+=b;
}
printf("%d",c);
}
③ c语言编程:怎么把一个十进制数转换成为一个十六进制数
第一种:用来糊弄老师的,输入一个数采用16进制格式输出
#include <stdio.h>
int main()
{
int num = 0;
scanf("%d", &num);
printf("%x", num);
return 0;
}
第二种:
#include <stdio.h>
#include <string.h>
char oNumTable[6] = {'A', 'B', 'C', 'D', 'E', 'F'};
void dToO(int, char*);
int main()
{
int dNum;
char oNum[100] = {0};
//输入一个十进制数
scanf("%d", &dNum);
//调用转换函数,将十进制转换成以字符串表示的十六进制
dToO(dNum, oNum);
//输出以字符串表示的16进制数据
printf("%s\n", oNum);
return 0;
}
void dToO(int dNum, char* oNum)
{
char temp[100] = {0};
for (int i = 0; (dNum) && (i < 100) ; i++) {
temp[i] = (dNum % 16);
if (temp[i] > 9) {
temp[i] = oNumTable[temp[i] - 10];
}
else{
temp[i] += '0';
}
dNum /= 16;
}
char* p = temp;
while (*(p+1)) p++;
for (int i = 0; p != temp - 1; i++, p--) {
oNum[i] = *p;
}
}
④ c语言:写一个程序完成二进制与十进制,十进制与十六进制之间的转换。
计算机中常用的数的进制主要有:二进制、八进制、十六进制,学习计算机要对其有所了解。2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。以下简介各种进制之间的转换方法:一、二进制转换十进制例:二进制“1101100”1101100←二进制数6543210←排位方法例如二进制换算十进制的算法:1*26+1*25+0*24+1*23+1*22+0*21+0*20↑↑说明:2代表进制,后面的数是次方(从右往左数,以0开始)=64+32+0+8+4+0+0=108二、二进制换算八进制例:二进制的“10110111011”换八进制时,从右到左,三位一组,不够补0,即成了:010110111011然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如:010=2110=4+2=6111=4+2+1=7011=2+1=3结果为:2673三、二进制转换十六进制十六进制换二进制的方法也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为:010110111011运算为:0101=4+1=51011=8+2+1=11(由于10为A,芹败所以11即B)1011=8+2+1=11(由于10为A,所以11即B)结果为:5BB四、二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:01100100,转换为10进制为:计算:0*20+0*21+1*22+0*23+0*24+1*25+1*26+0*27=100五、八进制数转换为十进制数八进制就是逢8进1。八进制数采用0~7这八数来表达一个数。八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……所以,设有一个八进制数:1507,转换为十进制为:计算:7*80+0*81+5*82+1*83=839结果是,八进制数1507转换成十进制数为839六、十六进制转换十进制例:2AF5换算成10进制直接计算就是:5*160+F*161+A*162+2*163=10997(别忘了,在上面的计算中,A表示10,而F表示15)、现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。假设有人问你,十进数1234为什么是一千二百三十四?你尽可以给他这么一个算式:1234=1*103+2*102+3*101+4*100十进制与二进制转换之相互算法十进制转二进制:用2辗转相除至结果为1将余数和最后的1从下向上倒序写就是结果例如302302/2=151余0151/2=75余175/2=37余137/2=18余118/2=9余09/2=4余14/2=2余02/2=1余0故二进制为100101110二进制转十进制从最后一位开始算,依次列为第0、1、2位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制:第0位:1乘2的0次方=11乘2的1次方=20乘2的2次方=01乘2的3次方=80乘2的4次方=01乘2的5次方=321乘2的6次方=640乘2的7次方=0然后:1+2+0+8+0+32+64+0=107.二进制01101011=十进制107.一、二进制数转换成十进制数由二进制野首灶数转换成十进制数的基本做法是,把二进制数颂扮首先写成加权系数式,然后按十进制加法规则求和。这种做法称为"按权相加"法。二、十进制数转换为二进制数十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。1.十进制整数转换为二进制整数十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。2.十进制小数转换为二进制小数十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。1.二进制与十进制的转换(1)二进制转十进制方法:"按权求和"例:(1011.01)2=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10=(8+0+2+1+0+0.25)10=(11.25)10(2)十进制转二进制·十进制整数转二进制数:"除以2取余,逆序输出"例:(89)10=(1011001)2289244……1222……0211……025……122……121……00……1·十进制小数转二进制数:"乘以2取整,顺序输出"例:(0.625)10=(0.101)20.625X21.25X20.5X21.02.八进制与二进制的转换例:将八进制的37.416转换成二进制数:37.416011111.100001110即:(37.416)8=(11111.10000111)2例:将二进制的10110.0011转换成八进制:010110.00110026.14即:(10110.011)2=(26.14)83.十六进制与二进制的转换例:将十六进制数5DF.9转换成二进制:5DF.9010111011111.1001即:(5DF.9)16=(10111011111.1001)2例:将二进制数1100001.111转换成十六进制:01100001.111061.E即:(1100001.111)2=(61.E)16
⑤ c语言二进制八进制十进制16进制怎么转换
二进制转换成八进制数
(1)二进制数转换成八进制数:对于整数,从低位到高位将二进制数的每三位分为一组,若不够三位时,在高位左面添0,补足三位,然后将每三位二进制数用一位八进制数替换,小数部分从小数点开始,自左向右每三位一组进行转换即可完成。例如:
将二进制数1101001转换成八进制数,则
(001 101 001)2
| | |
( 1 5 1)8
( 1101001)2=(151)8
(2)八进制数转换成二进制数:只要将每位八进制数用三位二进制数替换,即可完成转换,例如,把八进制数(643.503)8,转换成二进制数,则
(6 4 3 . 5 0 3)8
| | | | | |
(110 100 011 . 101 000 011)2
(643.503)8=(110100011.101000011)2
4、二进制与十六进制之间的转换
(1)二进制数转换成十六进制数:由于2的4次方=16,所以依照二进制与八进制的转换方法,将二进制数的每四位用一个十六进制数码来表示,整数部分以小数点为界点从右往左每四位一组转换,小数部分从小数点开始自左向右每四位一组进行转换。
(2)十六进制转换成二进制数
如将十六进制数转换成二进制数,只要将每一位十六进制数用四位相应的二进制数表示,即可完成转换。
例如:将(163.5B)16转换成二进制数,则
( 1 6 3 . 5 B )16
| | | | |
(0001 0110 0011. 0101 1011 )2
(163.5B)16=(101100011.01011011)2
⑥ 用java编程实现进制转换,本人初学者,希望大佬给个容易看懂的代码
importjava.util.Stack;
/**
*author:liujunbao
*date:2020/2/28
*desc:
*/
publicclassTest{
publicstaticvoid纳携main(String[]args){
Integera=300;
Integerb=8;
BinaryConversion(a,b);
}
/**
*
*@parama要转化的十进制数
*@paramb要转化的进制
*悉茄没该方法输出转化结果
*/
(Integera,睁纳Integerb){
Stackstack=newStack();
while(a!=0){
stack.push(a%b);
a=a/b;
}
while(!stack.empty()){
System.out.print(stack.pop());
}
}
}
⑦ C语言编程:八进制转换为十进制
#include<stdio.h>
void main()
{
char *p,s[6];int n;
p=s;
gets(p);
n=0;
while(*(p)!='