‘壹’ 所有进制的算法
#include <stdio.h>void a();void b();void c();void main(){ int s; do { printf("0.退出\n1.十进制~二进制\n2.十进制~八进制\n3.十进制~十六进制\n请选择:"); scanf("%d",&s); if(s==0) { break; } switch(s) { case 1: a();break; case 2: b();break; case 3: c();break; default:printf("输入有误!请输入0~4之间的数\n");break; } }while(1);}void a(){ int num,p[100],n=0,i; printf("请输入一个十进制整数:"); scanf("%d",&num); while(num!=0) { p[n]=num%2; num/=2; n++; } for(i=n-1;i>=0;i--) { printf("%d",p[i]); } printf("\n");}void b(){ int num,p[100],n=0,i; printf("请输入一个十进制整数:"); scanf("%d",&num); while(num!=0) { p[n]=num%8; num/=8; n++; } for(i=n-1;i>=0;i--) { printf("%d",p[i]); } printf("\n");}void c(){ int num,p[100],n=0,i; printf("请输入一个十进制整数:"); scanf("%d",&num); while(num!=0) { p[n]=num%16; num/=16; n++; } for(i=n-1;i>=0;i--) { if(p[i]<10) { printf("%d",p[i]); } else { switch(p[i]) { case 10: printf("A"); break; case 11: printf("B"); break; case 12: printf("C"); break; case 13: printf("D"); break; case 14: printf("E"); break; case 15: printf("F"); break; } } } printf("\n");} 答案补充 10进制数转化成R进制数就是不断地 取余、整除,最后把所有余倒序排列 比如:6转化成2进制数的步骤是,6取2的余是0,整除得3,3取2的余是1,整除得1,1取2的余是1,整除2得0,计算结束,再把所有余倒序排列,即110。
其它进制也是同样的道理,如果进制大于10,就要用ABCD来分别表示10进制中的(10、11、12、13、14),可以去查询下权的概念
‘贰’ 二进制的计算方法
加法:0+0=0;0+1=1;1+0=1;1+1=10;0进位为1。减法:0-0=0,1-0=1,1-1=0,0-1=1。
二进数转四进制时,以小数点为起点,向左和向右两个方向分别进行分段,每两个数字一段,不足两位的分别在左边或右边补零。
二进制数转换成八进制数:从小数点开始,整数部分向左、小数部分向右,每3位为一组用一位八进制数的数字表示,不足3位的要用“0”补足3位,就得到一个八进制数。
二进制数转换成十六进制数:二进制数转换成十六进制数时,只要从小数点位置开始,向左或向右每四位二进制划分一组(不足四位数可补0),然后写出每一组二进制数所对应的十六进制数码即可。
(2)进制计算方法扩展阅读:
计算机采用二进制的原因:
1、技术实现简单,计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示。
2、简化运算规则:两个二进制数和、积运算组合各有三种,运算规则简单,有利于简化计算机内部结构,提高运算速度。
3、适合逻辑运算:逻辑代数是逻辑运算的理论依据,二进制只有两个数码,正好与逻辑代数中的“真”和“假”相吻合。
4、易于进行转换,二进制与十进制数易于互相转换。
5、用二进制表示数据具有抗干扰能力强,可靠性高等优点。因为每位数据只有高低两个状态,当受到一定程度的干扰时,仍能可靠地分辨出它是高还是低。
‘叁’ 进制转换算法是怎么算
很简单的,给你看两个例子你就明白了。
十进制转二进制:用2辗转相除取余至到结果为1,将余数和最后的1从下向上倒序写就是结果
例如 :302 转换成二进制
302/2 = 151余0
151/2 = 75余1
75/2 = 37余1
37/2 = 18余1
18/2 = 9余0
9/2 = 4余1
4/2 = 2余0
2/2 = 1余0
所以,二进制就是100101110
二进制转十进制:从最后一位开始算,依次列为第0、1、2...n 位,第n位数(0或1)分别乘以2的n次方,最后相加就是结果
例如:01101011 转十进制:
第0位:1乘2的0次方=1
第1位:1乘2的1次方=2
第2位:0乘2的2次方=0
第3位:1乘2的3次方=8
第4位:0乘2的4次方=0
第5位:1乘2的5次方=32
第6位:1乘2的6次方=64
第7位:0乘2的7次方=0
然后:1+2+0+8+0+32+64+0=107.所以,十进制就是107
‘肆’ 二进制的计算方法
二进制的计算方法是:
1.
二进制的或运算: 遇1得1。
2.
二进制的与运算: 遇0得0。
3.
二进制的非运算: 各位取反。
‘伍’ 十六进制转换成十进制的具体算法
十六进制转换成十进制的具体算法是:
1、首先明白16进制数(从右到左数是第0位,第1位,第2位……)的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,依次这样排列下去。
2、明白ABCDEF表示的二进制数字分别是10,11,12,13,14,15。
3、十六进制转换成十进制的公式是:要从右到左用二进制的每个数去乘以16的相应次方,然后这些数字相加就是了。
在进行进制转换时有一基本原则:
转换后表达的“量”的多少不能发生改变。二进制中的111个苹果和十进制中的7个苹果是一样多的。
十进制中的数位排列是这样的…… 万 千 百 十 个 十分 百分 千分……
R进制中的数位排列是这样的……R^4 R^3R^2 R^1 R^0 R^-1 R^-2 R^-3……
可以看出相邻的数位间相差进制的一次方。
‘陆’ 八进制怎么算
一、八进制转换二进制
方法:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。
例:将八进制的(327)O转换为二进制的步骤如下:
1. 3 = 011;
2. 2 = 010;
3. 7 = 111;
4. 读数,读数从高位到低位,011010111,即(327)O=(11010111)B。
二、八进制转换十六进制
方法:将八进制转换为二进制,然后再将二进制转换为十六进制,小数点位置不变。
例:将八进制的(327)O转换为十六进制的步骤如下:
1. 3 = 011;
2. 2 = 010;
3. 7 = 111;
4. 0111 = 7;
5. 1101 = D;
6. 读数,读数从高位到低位,D7,即(327)O=(D7)H。
(6)进制计算方法扩展阅读:
1、十六进制数转换为八进制
转换方法:以二进制位中介,即先将十六进制数按照一位拆四位的方法转换为二进制,在对这个二进制数使用三位合一位的方法转换为八进制。
2、二进制化为八进制
整数部份从最低有效位开始,以3位一组,最高有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的整数。
小数部份从最高有效位开始,以3位一组,最低有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的小数。
‘柒’ 十六进制计算方法
0-9对应0-9;
A-F对应10-15;
十六进制数的加减法的进/借位规则为:借一当十六,逢十六进一。
十六进制数同二进制数及十进制数一样,也可以写成展开式的形式。
十进制整数转十六进制数:“除以16取余,逆序排列”(除16取余法)
例:(1765)10=(6E5)2
1765/16=110.......5
110/16=6........14
616=0......6
因为14对应E
十六进制数转换成二进制数:把每一个十六进制数转换成4位的二进制数,就得到一个二进制数。
十六进制数字与二进制数字的对应关系如下:
0000 -> 0 0100 -> 4 1000 -> 8 1100 -> C
0001 -> 1 0101 -> 5 1001 -> 9 1101 -> D
0010 -> 2 0110 -> 6 1010 -> A 1110 -> E
0011 -> 3 0111 -> 7 1011 -> B 1111 -> F
例:将十六进制数5DF.9 转换成二进制:
5 D F . 9 0101 1101 1111 .1001
即:(5DF.9)16 =(10111011111.1001)2
例:将二进制数1100001.111 转换成十六进制:
0110 0001 . 1110 6 1 . E
即:(1100001.111)2 =(61.E)16
(7)进制计算方法扩展阅读:
进制转换的理论:
1、 二进制数、十六进制数转换为十进制数:
用按权展开法把一个任意R 进制数a n a n-1 ...a1a 0 . a -1 a -2...a -m转换成十进制数,其十进制数值为每一位数字与其位权之积的和。
a n ×Rn+ a n-1×R n-1 +…+ a 1×R 1 + a 0×R 0 + a -1 ×R -1+ a -2×R -2+ …+ a -m ×R -m
2、 十进制转化成R 进制十进制数轮换成R 进制数要分两个部分:
整数部分要除R 取余数,直到商为0,得到的余数即为二进数各位的数码,余数从右到左排列(反序排 列) 。小数部分要乘R 取整数,得到的整数即为二进数各位的数码,整数从左到右排列(顺序排列) 。
3、十六进制转化成二进制:每一位十六进制数对应二进制的四位,逐位展开。
4、 二进制转化成十六进制:将二进制数从小数点开始分别向左(对二进制整数)或向右(对二进制小数)每四位组成一组,不足四位补零。
‘捌’ 什么是进制,各个进制的转换公式是什么
简单说,N进制就是“逢N进1,借1当N。”
N进制转换为10进制,直接写成多项式计算就可以了,
就像 253(10进制)=2*10^2+5*10+2
253(8进制)=2*8^2+5*8+3=171(10进制)
253(16进制)=2*16^2+5*16+3=595(10进制)
110111(2进制)=1*2^5+1*2^4+0*2^3+1*2^2+1*2^1+1=55
10进制转换为N进制,那就要“除N取余”了。
如 485转换为8进制:
485/8=60........5
60/8=7........4
7/8=0........7
所以485(10进制)=745(8进制) (注意:最后的数要倒序写)
又如 4593转换为16进制:
4593/16=287..........1
287/16=17............15
17/16=1................1
1/16=0..................1
所以,4593(10进制)=11F1(16进制)(注:16进制的数需要16个数码,用0-9和A-F表示)
再如 123转换为2进制:
123/2=61..........1
61/2=30...........1
30/2=15............0
15/2=7.............1
7/2=3................1
3/2=1...............1
1/2=0...............1
所以 123(10进制)=1111011(2进制)
‘玖’ 二进制的计算方法是怎样的请举个例子谢谢,
二进制的运算算术运算二进制的加法:0+0=0,0+1=1 ,1+0=1, 1+1=10(向高位进位);即7=111,10=10103=11。
二进制的减法:0-0=0,0-1=1(向高位借位) 1-0=1,1-1=0 (模二加运算或异或运算) ;
二进制的乘法:0 * 0 = 00 * 1 = 0,1 * 0 = 0,1 * 1 = 1 二进制的除法:0÷0 = 0,0÷1 = 0,1÷0 = 0 (无意义),1÷1 = 1 ;
逻辑运算二进制的或运算:遇1得1 二进制的与运算:遇0得0 二进制的非运算:各位取反。
(9)进制计算方法扩展阅读:
二进制的转换:
二进制转换为其他进制:
1、二进制转换成十进制:基数乘以权,然后相加,简化运算时可以把数位数是0的项不写出来,(因为0乘以其他不为0的数都是0)。小数部分也一样,但精确度较少。
2、二进制转换为八进制:采用“三位一并法”(是以小数点为中心向左右两边以每三位分组,不足的补上0)这样就可以轻松的进行转换。例:将二进制数(11100101.11101011)2转换成八进制数。 (11100101.11101011)2=(345.353)8
3、二进制转换为十六进制:采用的是“四位一并法”,整数部分从低位开始,每四位二进制数为一组,最后不足四位的,则在高位加0补足四位为止,也可以不补0。
小数部分从高位开始,每四位二进制数为一组,最后不足四位的,必须在低位加0补足四位,然后用对应的十六进制数来代替,再按顺序写出对应的十六进制数。