分享
 
 
 

进制转换

王朝百科·作者佚名  2010-02-05
窄屏简体版  字體: |||超大  

目录:

一、正数1. 十 -------> 二

2. 二 -------> 十

3. 十 -------> 八

4. 八 -------> 十

5. 十六------> 十

1. 二 -------> 八

2. 八 -------> 二

3. 十六 ----> 二

4. 二 ----> 十六

一、正数在高速发展的现代社会,计算机浩浩荡荡地成为了人们生活中不可缺少的一部分,帮助人们解决通信,联络,互动等各方面的问题。今天我就给大家讲讲与计算机有关的“进制转换”问题。

我们以(25.625)(十)为例讲解一下进制之间的转化问题

说明:小数部份的转化计算机二级是不考的,有兴趣的人可以看一看

1. 十 -----> 二(25.625)(十)

整数部分:

25/2=12......1

12/2=6 ......0

6/2=3 ......0

3/2=1 ......1

1/2=0 ......1

然后我们将余数按从下往上的顺序书写就是:11001,那么这个11001就是十进制25的二进制形式

小数部分:

0.625*2=1.25

0.25 *2=0.5

0.5 *2=1.0

然后我们将整数部分按从上往下的顺序书写就是:101,那么这个101就是十进制0.625的二进制形式

所以:(25.625)(十)=(11001.101)(二)

十进制转成二进制是这样:

把这个十进制数做二的整除运算,并将所得到的余数倒过来.

例如将十进制的10转为二进制是这样:

(1) 10/2,商5余0;

(2) 5/2,商2余1;

(3)2/2,商1余0;

(4)1/2,商0余1.

(5)将所得的余数侄倒过来,就是1010,所以十进制的10转化为二进制就是1010

2. 二 ----> 十(11001.101)(二)

整数部分: 下面的出现的2(x)表示的是2的x次方的意思

1*2(4)+1*2(3)+0*2(2)+0*2(1)+1*2(0)=25

小数部分:

1*2(-1)+0*2(-2)+1*2(-3)=0.625

所以:(11001.101)(二)=(25.625)(十)

二进制转化为十进制是这样的:

这里可以用8421码的方法.这个方法是将你所要转化的二进制从右向左数,从0开始数(这个数我们叫N),在位数是1的地方停下,并将1乘以2的N次方,最后将这些1乘以2的N次方相加,就是这个二进数的十进制了.

还是举个例子吧:

求110101的十进制数.从右向左开始了

(1) 1乘以2的0次方,等于1;

(2) 1乘以2的2次方,等于4;

(3) 1乘以2的4次方,等于16;

(4) 1乘以2的5次方,等于32;

(5) 将这些结果相加:1+4+16+32=53

3. 十 ----> 八(25.625)(十)

整数部分:

25/8=3......1

3/8 =0......3

然后我们将余数按从下往上的顺序书写就是:31,那么这个31就是十进制25的八进制形式

小数部分:

0.625*8=5

然后我们将整数部分按从上往下的顺序书写就是:5,那么这个0.5就是十进制0.625的八进制形式

所以:(25.625)(十)=(31.5)(八)

4. 八 ----> 十(31.5)(八)

整数部分:

3*8(1)+1*8(0)=25

小数部分:

5*[8(-1)]=0.625

所以(31.5)(八)=(25.625)(十)

5. 十 ----> 十六(25.625)(十)

整数部分:

25/16=1......9

1/16 =0......1

然后我们将余数按从下往上的顺序书写就是:19,那么这个19就是十进制25的十六进制形式

小数部分:

0.625*16=10(即十六进制的A或a)

然后我们将整数部分按从上往下的顺序书写就是:A,那么这个A就是十进制0.625的十六进制形式

所以:(25.625)(十)=(19.A)(十六)

6. 十六----> 十(19.A)(十六)

整数部分:

1*16(1)+9*16(0)=25

小数部分:

1*16(-1)+0*16(-2)=0.625

所以(19.A)(十六)=(25.625)(十)

如何将带小数的二进制与八进制、十六进制数之间的转化问题

我们以(11001.101)(二)为例讲解一下进制之间的转化问题

说明:小数部份的转化计算机二级是不考的,有兴趣的人可以看一看

7. 二 ----> 八(11001.101)(二)

整数部分: 从后往前每三位一组,缺位处用0填补,然后按十进制方法进行转化, 则有:

001=1

011=3

然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式

小数部分: 从前往后每三位一组,缺位处用0填补,然后按十进制方法进行转化, 则有:

101=5

然后我们将结果部分按从上往下的顺序书写就是:5,那么这个5就是二进制0.101的八进制形式

所以:(11001.101)(二)=(31.5)(八)

8. 八 ----> 二(31.5)(八)

整数部分:从后往前每一位按十进制转化方式转化为三位二进制数,缺位处用0补充 则有:

1---->1---->001

3---->11

然后我们将结果按从下往上的顺序书写就是:11001,那么这个11001就是八进制31的二进制形式

说明,关于十进制的转化方式我这里就不再说了,上一篇文章我已经讲解了!

小数部分:从前往后每一位按十进制转化方式转化为三位二进制数,缺位处用0补充 则有:

5---->101

然后我们将结果按从下往上的顺序书写就是:101,那么这个101就是八进制5的二进制形式

所以:(31.5)(八)=(11001.101)(二)

9. 十六 ----> 二(19.A)(十六)

整数部分:从后往前每位按十进制转换成四位二进制数,缺位处用0补充 则有:

9---->1001

1---->0001(相当于1)

则结果为00011001或者11001

小数部分:从前往后每位按十进制转换成四位二进制数,缺位处用0补充 则有:

A(即10)---->1010

所以:(19.A)(十六)=(11001.1010)(二)=(11001.101)(二)

10. 二 ----> 十六(11001.101)(二)

整数部分:从后往前每四位按十进制转化方式转化为一位数,缺位处用0补充 则有:

1001---->9

0001---->1

则结果为19

小数部分:从前往后每四位按十进制转化方式转化为一位数,缺位处用0补充 则有:

1010---->10---->A

则结果为A

所以:(11001.101)(二)=(19.A)(十六)

二、负数负数的进制转换稍微有些不同。

先把负数写为其补码形式(在此不议),然后再根据二进制转换其它进制的方法进行。

例:要求把-9转换为八进制形式。则有:

-9的补码为11110111。然后三位一划

111---->7

110---->6

011---->3

然后我们将结果按从下往上的顺序书写就是:367,那么367就是十进制数-9的八进制形式。

补充:

最近有些朋友提了这样的问题“0.8的十六进制是多少?”

我想在我的空间里已经有了详细的讲解,为什么他还要问这样的问题那

于是我就动手算了一下,发现0.8、0.6、0.2... ...一些数字在进制之间的转化

过程中确实存在麻烦。

就比如“0.8的十六进制”吧!

无论你怎么乘以16,它的余数总也乘不尽,总是余8

这可怎么办啊,我也没辙了

第二天,我请教了我的老师才知道,原来这么简单啊!

具体方法如下:

0.8*16=12.8

0.8*16=12.8

.

.

.

.

.

取每一个结果的整数部分为12既十六进制的C

如果题中要求精确到小数点后3位那结果就是0.CCC

如果题中要求精确到小数点后4位那结果就是0.CCCC

现在OK了,我想我的朋友再也不会因为进制的问题烦愁了!

下面是将十进制数转换为负R进制的公式:

N=(dmdm-1...d1d0)-R

=dm*(-R)^m+dm-1*(-R)^m-1+...+d1*(-R)^1+d0*(-R)^0

15=1*(-2)^4+0*(-2)^3+0*(-2)^2+1*(-2)^1+1*(-2)^0

=10011(-2)

其实转化成任意进制都是一样的

C程序代码:(支持负进制)#include <stdio.h>

#include <math.h>

main()

{

long n,m,r;

while( scanf( "%ld%ld",&n,&r)!=EOF){

if (abs(r)> 1 && !(n <0 && r> 0)){

long result[100];

long *p=result;

printf( "%ld=",n);

if (n!=0){

while(n!=0){

m=n/r;*p=n-m*r;

if (*p <0 && r <0){

*p=*p+abs(r);m++;

}

p++;n=m;

}

for (m=p-result-1;m>=0;m--){

if (result[m]> 9)

printf( "%c",55+result[m]);

else

printf( "%d",result[m]);

}

}

else printf( "0");

printf( "(base%d)

",r);

} }

return 0;

}

以下为10进制以下转换。。。

用函数,可直接拷贝。。。

#include<stdio.h>

int x[100];

int jzzh(int y,int ml)

{

int i,j;

i=ml;

int a;

x[0]=0;

for(a=1;;a++)

{

j=i%y;

if(i!=0)

{

x[a]=j;

x[0]++;

}

else

break;

i=i/y;

}

}

int main()

{

long int y,ml;

long int a;

printf("请输入需要转换至进制数:");

scanf("%d",&y);

printf("请输入数字:");

scanf("%d",&ml);

jzzh(y,ml);

for(a=x[0];a>=1;a--)

printf("%d",x[a]);

printf("

");

system("pause");

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有