Ⅰ c语言中如何实现进制转换
1、十进制转换成八进制有两种方法:
(1)间接法:先将十进制转换成二进制,然后将二进制又转换成八进制。
(2)直接法:八进制是由二进制衍生而来的,因此可以采用与十进制转换为二进制相类似的方法,还是整数部分的转换和小数部分的转换,下面来具体讲解一下:
①整数部分
方法:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。
②小数部分
方法:乘8取整法,即将小数部分乘以8,然后取整数部分,剩下的小数部分继续乘以8,然后取整数部分,剩下的小数部分又乘以8,一直取到小数部分为零为止。如果永远不能为零,就同十进制数的四舍五入一样,暂取个名字叫3舍4入。
2、十进制的转换到十六进制:
十六进制与八进制有很多相似之处,可以参照上面八进制与十进制的转换实现这两个进制之间的转换。
Ⅱ c语言中的二进制,八进制,十进制,十六进制都怎么算……,可否举例,谢
先讲一下,二进制与十进制。
以10为例,过程如图。
10进制转化为二进制
10÷2=5....0(余数为0)
5÷2=2....1(余数为1)
2÷2=1....0
1÷2=0....1
然后,非常重要的一步,将余数倒序相加
即:1010
这里特地说明一下,当被除数比除数小时,余数永远为它自己。
如:8÷10 余数为8
二进制转化为十进制
1010
从 右 算起分别对应 :
1 2 4 8
也就是 2的1次方,2次方,3次方
第三步,小数部分怎么计算呢
如10.1
很简单,将0.1乘以2
在乘到整数之前,将结果的整数取出。
如:
0.1x2=0.2.....0
0.2x2=0.4.....0
0.4x2=0.8......0
0.8x2=1.6......1
正序排下来: 0001
至于八进制和十六进制,其实是一样的方法。就是把2换成8。
顺便说一下,如果你是要做开发而不是考试的话可以直接用win系统自带的计算器,选择“程序员” 模式可以直接得到2.8.10.16进制的所有结果。
Ⅲ C语言的进制是怎样计算的,最好能举例子说明,
二进制就是这样,所有数都是用两个数来表示1和0,10就制就是到10升一位,2进制就是到2升一位,0=0
1=1
2=10(到2要升位),3=11,4=100,5=101,6=110,7=111,
1
2
3
4
5
6
7
这组数依次叠加,换成二进制就也是一组从1开始的依次叠加数字,1
10
11
100
101
110
111,小数字可以用心算换出来,数值太大了就得用公式来转换,楼上有写
Ⅳ C语言中八进制和16进制怎么表示
一、八进制由 0~7 八个数字组成,使用时必须以0开头(注意是数字 0,不是字母 o),例如:
//合法的八进制数
int a = 015; //换算成十进制为 13
int b = -0101; //换算成十进制为 -65
int c = 0177777; //换算成十进制为 65535
//非法的八进制
int m = 256; //无前缀 0,相当于十进制
int n = 03A2; //A不是有效的八进制数字
二、十六进制由数字 0~9、字母 A~F 或 a~f(不区分大小写)组成,使用时必须以0x或0X(不区分大小写)开头,例如:
//合法的十六进制int a = 0X2A; //换算成十进制为 42
int b = -0XA0; //换算成十进制为 -160
int c = 0xffff; //换算成十进制为 65535
//非法的十六进制
int m = 5A; //没有前缀 0X,是一个无效数字
int n = 0X3H; //H不是有效的十六进制数字
二进制化为八进制
整数部份从最低有效位开始,以3位一组,最高有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的整数。
小数部份从最高有效位开始,以3位一组,最低有效位不足3位时以0补齐,每一组均可转换成一个八进制的值,转换完毕就是八进制的小数。
例:(11001111.01111)2 = (011 001 111.011 110)2 = (317.36)8
以上内容参考:网络-八进制
Ⅳ c语言中各种进制的转换规矩 详细些 最好是计算过程写出来
代码如下:(可以输出20位数)#include<stdio.h>
void transfer(int m,int change)
{
int aa[20],j,saveM=m;
for(j=0;m!=0;j++)
{
aa[j]=m%change;
m=m/change;
}
printf("十进制数%d的%d进制形式是:\n",saveM,change);
for(;j!=0;j--)
printf("%d ",aa[j-1]); //注意这空是填aa[j-1],而不是aa[j],因为上面那个循环进行到最后一步时,j++还是会运行一次,但是此时并没有给aa[j]赋值,因为循环结束
}
main()
{
int n,c;
printf("请输入一个整数\n");
scanf("%d",&n);
printf("该整数是十进制数,你想将它转化成几进制数呢?\n");
getchar();
scanf("%d",&c);
transfer(n,c);
} 功能说明:该函数可以将任意的十进制数转化成任意的N进制数。转化后的结果,每两位数之间用一个空格隔开。
希望可以帮到您,谢谢!
Ⅵ C语言中的各进制的转换方法
C++的,如果要TC的将中文改为English就行了
#include<stdio.h>
#include<math.h>
void ten_two()
{
int num, i;
int arr[20];
printf("请输入一个十进制数:");
scanf("%d",&num);
for( i = 0 ; 1 ; i++)
{ //转换为二进制并存入数组
arr[i] = num % 2;
num = num / 2;
if(num == 0)
{
break;
}
}
printf("转换为二进制:"); //打印
for(; i >= 0 ; i-- ){
printf("%d",arr[i]);
}
printf("\n");
}
void ten_eight()
{
int num, i;
int arr[20];
printf("请输入一个十进制数:");
scanf("%d",&num);
for( i = 0 ; 1 ; i++){//转换为八进制并存入数组
arr[i] = num % 8;
num = num / 8;
if(num == 0){
break;
}
}
printf("转换为八进制:"); //打印
for(; i >= 0 ; i-- ){
printf("%d",arr[i]);
}
printf("\n");
}
void ten_sixteen()
{
int num, i;
int arr[20];
printf("请输入一个十进制数:");
scanf("%d",&num);
for( i = 0 ; 1 ; i++){ //转换为二进制并存入数组
arr[i] = num % 16;
num = num / 16;
if(num == 0){
break;
}
}
printf("转换为十六进制:"); //打印
for(; i >= 0 ; i-- ){
switch(arr[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;
default :printf("%d",arr[i]);
}
}
printf("\n");
}
void two_ten()
{
long num;
int b,TheTen=0,Total=0;
printf("请输入一个二进制数(只包含0或1):");
scanf("%ld",&num);
while(num)
{
b=num-(int)(num/10)*10;
TheTen+=b*pow(2,Total);;
Total++;
num=(int)(num/10);
}
printf("转换为十进制:"); //打印
printf("%d",TheTen);
printf("\n");
}
void eight_ten()
{
int num, i;
int arr[20];
printf("请输入一个八进制数(只由0~7之前的数组成):");
scanf("%o",&num);
printf("转换为十进制:"); //打印
printf("%d",num);
printf("\n");
}
void sixteen_ten()
{
int num, i;
int arr[20];
printf("请输入一个十六进制数(只由0~9和A~F之前的数组成):");
scanf("%X",&num);
printf("转换为十进制:"); //打印
printf("%d",num);
printf("\n");
}
void main()
{
int select;
do{
printf("0 - 退出,1 - 十进制转二进制,2 - 十进制转八进制,3 - 十进制转十六进制,4 - 二进制转十进制,5 - 八进制转十进制,6 - 十六进制转十进制\n");
scanf("%d",&select);
switch(select){
case 1 : ten_two(); break; //十进制转二进制
case 2 : ten_eight(); break; //十进制转八进制
case 3 : ten_sixteen(); break; //十进制转十六进制
case 4 : two_ten(); break; //二进制转十进制
case 5 : eight_ten(); break; //八进制转十进制
case 6 : sixteen_ten(); break; //六十进制转十进制
default : printf("您的输入有误,请重新输入!"); break;
}
if(select == 0)
{break;}
}while(1);
}
Ⅶ C语言中的进制怎么转换啊
关于进制转换,我觉得挺好玩的不就是几个公式吧了,
就如我第一次所学的二进制转换为十进制,十进制转换为二进制,那样的类型其实也挺有趣的
比如:一个二进制数转化为十进制数,如哦我所给的一个二进制数“101101001”我就设十进制数是Z
首先有个公式可套:Z=1*X8+0*X7+1*X6+1*X5+0*X4+1*X3+0*X2+0*X1+1*X0
把只是X换为2,算出来的就是你所得到的此二进制数所对应的十进制数
同理:如八进制数转换为十进制数就是把X换为8,十六进制数转换十进制数把X换为16,
至于二进制数转化为八进制数更有意思;
首先我引进一个例子:这是一个比较特殊的二进制数:111111111111
首先把这组数按三个数划分一组(从右开始划分):如,111,111,111,111 于是结果是7777
然后就分别把化为各组的数组转化为是进制数,最后进把你刚才算出的数按原来的顺序排起来,于是得到的结果就是你想要的
那十六进制就是把数组中的每四个划分一组(从右开始划分的)
如111111111111划分结果为1111,1111,1111, 方法与上面一样,于是它的结果是fff
关于十进制转化二进制,八进制和十六进制,方法都是一样的
同二进制方法雷同。
Ⅷ 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。字母不区分大小写。
下面用余数短除法把十进制数转化为二进制数为例进行说明
1、明确问题。举个例子,我们现在是要将一个十进制数字156转换成二进制数字。先将这个十进制数作为被除数写在一个倒着的“长除法”的符号里。把目标数系的基数(在这里二进制是“2”)作为除数写在这个除法符号的外面。用这个方法将计算过程可视化会更方便理解,因为整个计算过程只需将数字一直除以2。
活用这个方法可以将所有十进制数字转换成任何进制表达。除数为2是因为我们最终想得到的以2为基数的数(即二进制数值) 。如果最终想得到其他数系的数字,用目标数系的基数代替这个方法里二进制的基数2 就可以了。例如,要得到基数为9的数,就用9来代替2作为除数 。最终的结果就是目标数系的数字表达。
(8)c语言求进制的方法扩展阅读:
十进制--->二进制
对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。
对于小数部分,采用连续乘以基数2,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称“乘基取整法”
十进制--->八进制
10进制数转换成8进制的方法,和转换为2进制的方法类似,唯一变化:除数由2变成8。
Ⅸ C语言进制计算
这个其实你要先弄明白是几进制换成几进制,这里全是8进制转换为十进制的:
015
换为2进制:001101
换成十进制:2^3+2^2+2^0=8+4+1=13
0101
换为2进制001000001
换成十进制:2^6+2^0=64+1=65
177777
换成2进制001111111111111111
换成十进制2^15+2^14+2^13+2^12+2^11+2^10+2^9+2^8+2^7+2^6+2^5+2^4+2^3
+2^2+2^1+2^0=32768+16384+8192+4096+2048+1024+512+256+128+64+32+16+8+4+2+1=65535
Ⅹ C语言里面的进制换算方法
我举例说明把:
二进制
基数:2
数码:0、1
1011.01按权展开式
1*2^3+0*2^2+1*2^1+1*2^0+0*2^-1+1*2^-2=11.25
(123)8=1*8^2+2*8^1+3*8^0=83
(AFF)16=10*16^2+15*16^1+15*16^0=
(XY)N=X*N^1+Y*N^0
N转十:按权展开式
十转N:除N取余
十六转二:每个位转成4位二进制数
八转二:每个位转成3位二进制数
二转十六:从右往左,每4位划分成一个十六进制数位。高位如果不够4位,补0.
二转八:从右往左,每3位划分成一个八进制数位。高位如果不够3位,补0
记住
都是按8421码转换的!
楼主认为好的话就采纳一下吧!你是学c程序的吗??是的话可以进我的群123247317(计算机软件技术)