文档库 最新最全的文档下载
当前位置:文档库 › 5进制转换

5进制转换

5进制转换
5进制转换

目录

第5章进制转换问题 (2)

5.1 基础知识 (2)

5.1.1 相关概念 (2)

5.1.2 各种常见的进制 (2)

5.1.3 进制转换 (3)

5.2 例5001 特殊的四位数 (5)

5.3 例5002 进制转换 (7)

5.4 例5003 skew数 (8)

5.5 例5004 周易 (10)

5.6 例5005 奶牛计算器 (12)

5.7 例5006 计算器设计 (14)

5.8 例5007 回文数 (17)

第5章进制转换问题

5.1 基础知识

5.1.1 相关概念

1.数制

数制是人们利用符号进行计数的一种科学方法。数制也称为计数制,是用一组固定的符号和统一的规则来表示数值的方法。

2.进制

进制也就是进位制,是人们规定的一种进位方法。对于任何一种进制——X进制,就表示某一位置上的数运算时是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一。

3.数码

数制中表示基本数值大小的不同数字符号。例如,十进制有10个数码:0、1、2、3、4、5、6、7、8、9。

4.基数

数制所使用数码的个数。例如,二进制的基数为2;十进制的基数为10。

5.位权

位权表示数的符号在不同的位置上时所代表的值是不同的。也就是数制中某一位上的1所表示数值的大小(所处位置的价值)。例如,十进制的123,1的位权是100,2的位权是10,3的位权是1。

5.1.2 各种常见的进制

人们通常采用的进制有十进制、二进制、八进制和十六进制等。

1.十进制(Decimal)

十进制是人们日常生活中最熟悉的进位计数制。在十进制中,数码共有0,1,2,3,4,5,6,7,8,9这十个符号。计数规则是逢十进一。

2.二进制(Binary)

二进制是在计算机系统中采用的进位计数制。二进制数有两个特点:在二进制中,数码只有0和1两个符号。计数规则是逢二进一。

为区别于其它进制数,二进制数的书写通常在数的右下方注上基数2,或在后面加上B 表示。例如:二进制数10110011可以写成(10110011)2,或写成10110011B。

3.八进制数(Octal)

由于二进制数据的基数比较小,所以二进制数据的书写和阅读很不方便,为此,在小型机中引入了八进制。八进制的基数R=8=23,有数码0、1、2、3、4、5、6、7,并且每个数码正好对应三位二进制数,所以八进制能很好地反映二进制。八进制用下标8或数据后面加O表示例如:二进制数据(11 101 010 . 010 110 100 )2 ,对应的八进制数据(352.264)8或352.264O。

4.十二进制(Duodecimal)

十二进制在生活中也是经常用到的,例如,长度单位一英尺等于12英寸,一先令等于12便士,就连足球比赛罚点球的英制长度也是12码。此外还有一打12个,钟表转一圈12小时等等。

一般在十二进制中,10和11可用M和N表示,有时候也可用A和B表示。

5.十六进制(Hexadecimal)

十六进制是人们在计算机指令代码和数据的书写中经常使用的数制。在十六进制中,由十六个字符0~9以及A,B,C,D,E,F(或a,b,…,f)组成(它们分别表示十进制数10~15)来描述。计数规则是逢十六进一,即基数R=16=24,通常在表示时用尾部标志H或下标16以示区别。例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H。

6.六十进位制数(Sexagesimal)

古代人由于生产劳动的需要,要研究天文和历法,就牵涉到时间和角度了。因为历法需要的精确度较高,时间的单位小时,角度的单位度都嫌太大。必须进一步研究他们的小数。它们的小数都具有这样的性质:使1/2,1/3,1/4,1/5,1/6等都能成为他的整数倍。以1/60作为单位,就正好具有这个性质。譬如:1/2等于30个1/60,1/3等于20个1/60,1/4等于15个1/60……这种小数的进位制在表示有些数时很方便。例如常遇到的1/3,在十进位制中要变成无限小数,但在这种进位制中就是一个整数。因此就出现了六十进制。

5.1.3 进制转换

在实际运算中,我们经常用到各种不同的进制,这就需要在各种数制之间进行转换。

1.其他进制转换为十进制(按权求和)

方法是:将其它进制按权位展开,然后各项相加,就得到相应的十进制数。

例1:N=(10110.101)B=(?)D

按权展开N=1*24+0*23+1*22+1*21+0*20+1*2-1+0*2-2+1*2-3

=16+4+2+0.5+0.125 =(22.625)D

例2:(38A.11)16转换为十进制数

(38A.11)16

=3×162+8×161+10×160+1×16-1+1×16-2

=768+128+10+0.0625+0.0039

=906.0664

2.十进制转换成其它进制

方法是:分两部分分别进行的,即整数部分和小数部分。

(1)整数部分:(基数除法)

把我们要转换的数除以新的进制的基数,把余数作为新进制的最低位;

把上一次得到的商再除以新的进制基数,把余数作为新进制的次低位;

继续上一步,直到最后的商为零,这时的余数就是新进制的最高位。

(2)小数部分:(基数乘法)

把要转换数的小数部分乘以新进制的基数,把得到的整数部分作为新进制小数部分的最高位。

把上一步得的小数部分再乘以新进制的基数,把整数部分作为新进制小数部分的次高位;

继续上一步,直到小数部分变成零为止。或者达到预定的精度要求或位数要求也可以。

3.二进制与八进制、十六进制的相互转换

二进制转换为八进制、十六进制:它们之间满足23和24的关系,因此把要转换的二进制从低位到高位每3位或4位一组,高位不足时在有效位前面添“0”,然后把每组二进制数转换成八进制或十六进制即可。

八进制、十六进制转换为二进制时,把上面的过程逆过来即可。也就是把一个八或十六进制位转换为3或4个二进制位。

例3:N=(C1B)H=(?)B

(C1B)H=1100/0001/1011=(110000011011)B

4.数制转换的一般化

(1)R进制转换成十进制

任意R进制数按权展开,相加即可得十进制数据。例如:N = 1101.0101B = 1*23+1*22+0*21+1*20+0*2-1+1*2-2+0*2-3+1*2-4 = 8+4+0+1+0+0.25+0+0.0625 = 13.3125 N = 5A.8H = 5*161+A*160+8*16-1 = 80+10+0.5 = 90.5

(2)十进制转换R进制

十进制数转换成R进制数,须将整数部分和小数部分分别转换。

整数转换——除R取余法,规则:

①用R去除给定的十进制数的整数部分,取其余数作为转换后的R进制数据的整数部

分最低位数字;

②再用R 去除所得的商,取其余数作为转换后的R 进制数据的高一位数字; ③重复执行②操作,直到商为0结束。 小数转换——乘R 取整法,规则:

① 用R 去乘给定的十进制数的小数部分,取乘积的整数部分作为转换后R 进制小数

点后第一位数字;

②再用R 去乘上一步乘积的小数部分,然后取新乘积的整数部分作为转换后R 进制小数的低一位数字;

② 重复②操作,一直到乘积为0,或已达到精度要求或位数要求为止。

解决数制转换问题时,如果所给的数值不是用十进制表示的,一般用一个字符型数组来存放。数组的每个元素分别存储它的一位数字。然后按位转换求和,得到十进制表示;再把十进制表示转换成所求的数制表示。转换的结果也用一个字符型数组表示,每个元素表示转换结果的一位数字。

根据数制表示中相邻位的基数关系,可以把不同的数制分成两类。一类数制表示中,相邻位的基数是等比关系,例如我们熟悉的十进制表示。另一类数制表示中,相邻位的基数是不等比的。例如在时间表示中,从秒到分采用60进进制;从月到年则采用12进制。把一个数值从数制B 的表示b m b m-1b m-2 ... b 1 转换成十进制表示d n d n-1d n-2 ... d 1 比较简单。假设数制B 中,第i 位的基数为base i (1<=i<=m),直接把base i 与b i 相乘,然后对全部乘积求和。从十进制表示d n d n-1d n-2 ... d 1 到b m b m-1b m-2 ... b 1 的转换需要分两种情况考虑:

●数制B 中相邻数字的基数是等比关系,即:base i (1<=i<=m)可以表示成C

i-1

,其中C 是

一个常量。将d n d n-1d n-2 ... d 1 除以C ,余数即为b 1;将d n d n-1d n-2 ... d 1 和C 相除的结果再除以C ,余数即为b 2;… ;直至计算出为b m 止。

●数制B 中相邻数字的基数不等比。需要先判断dnd n-1d n-2 ... d1 在数制B 中需要的位数m ,然后从高位到低位依次计算bm 、bm-1 、b m-2 、...、b1。

5.2 例5001 特殊的四位数

(来源:https://www.wendangku.net/doc/151473966.html, 2405/https://www.wendangku.net/doc/151473966.html, 2196) 问题描述:

找出并输出所有的4位数(十进制数)中具有如下属性的数:四位数字之和等于其十六进制形式各位数字之和,也等于其十二进制形式各位数字之和。

例如:十进制数2991,其四位数字之和2+9+9+1 = 21。由于2991 = 1*1728 + 8*144 + 9*12 + 3,其十二进制形式为1893(12), 其各位数字之和也为21。但是它的十六进制形式为BAF (16),其各位数字之和等于11+10+15 = 36。因此你的程序要舍去2991这个数据。

下一个数2992,其十进制、十二进制、十六进制形式各位数字之和均为22,因此2992符合要求,应该输出来。(只考虑4位数,2992是第一个符合要求的数) 输入:

本题没有输入。

你的程序要求输出2992及其他更大的、满足要求的四位数(要求严格按升序输出),每个数占一行(前后都没有空行),整个输出以换行符结尾。输出中没有空行。输出中的前几行如输出样例所示。

输入样例:

本题没有输入。

输出样例:

2992

2993

2994

2995

2996

2997

2998

2999

...

解题分析:

该题在求解时要用到枚举的算法思想,即枚举所有的四位数(1000-9999),判断其是否满足十六进制、十二进制和十进制形式的各位数之和相等。由于题目已经告诉你3000以内的所有满足条件的数,因此我们可以直接输出这些数,从3000开始枚举。

将一个十进制数N转换到B进制,其方法是:将N除以B取余数,直到商为0为止,存储得到的余数,然后逆序输出余数即可得到B进制下的数,但由于此题只需要得到N在16、12和10进制下各位的和,所以不需要对余数逆序,直接累加其余数即可。

参考程序(zzg):

#include

#include

#include

int base(int b,int n)

{

int sum = 0;

while( n != 0 )

{

sum += n%b;

n /= b ;

}

return sum;

}

int main()

{

int i,a;

printf("2992\n2993\n2994\n2995\n2996\n2997\n2998\n2999\n");

for(i=3000; i<10000; i++)

a = base(12,i);

if( base(10,i) == a && a == base(16,i) )

{

printf("%d\n",i);

}

}

return 0;

}

5.3 例5002 进制转换

(来源:https://www.wendangku.net/doc/151473966.html, 2031)

问题描述:

输入一个十进制数N,将它转换成R进制数输出。

输入:

输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R (2<=R<=16,R<>10)。

输出:

为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。

输入样例:

7 2

23 12

-4 3

输出样例:

111

1B

-11

解题分析:

这题就是考察十进制转换为其他进制的用法,由于需要转换的是整数,因此只需要把十进制整数除以R取余即可。这里可以采用循环或递归来实现即可。由于R不确定,因此我们可以编写个函数来实现十进制转换为R进制的功能。

参考程序(hxx):

#include

int TenToR(int num,int r)

{

char m;

if(num==0)

return 0;

TenToR(num/r,r);

m=(num%r>9 ? num%r-10+'A':num%r+'0'); printf("%c",m); }

int main() { int n,r;

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

{

if(!n)

printf("0"); else if(n>0) TenToR(n,r); else { printf("-");

TenToR(-n,r);

}

printf("\n"); }

return 0; }

5.4 例5003 skew 数

(来源:https://www.wendangku.net/doc/151473966.html, 2973) 问题描述:

在skew 二进制数表示中,第k 位的值xk 表示xk*(2

k+1

-1) 。每个位上的可能数字是0或1,

最后面一个非零位可以是2,例如, 10120(skew) = 1*(25-1) + 0*(24

-1) + 1*(23

-1) + 2*(22

-1)

+0*(21

-1) = 31 + 0 + 7 + 6 + 0 = 44. 前十个skew 数是 0、1、2、10、11、12、20、100、101以及102。

输入:

输入包含一行或多行,每行包含一个整数n 。如果n = 0 表示输入结束,否则n 是一个skew 数。 输出:

对于每一个输入,输出它的十进制表示。转换成十进制后, n 不超过 231

-1 = 2 147 483 647。 输入样例: 10120

200000000000000000000000000000 10

1000000000000000000000000000000 11 100

11111000001110000101101102000 0

输出样例:

44

2147483646 3

2147483647 4 7

1041110737 解题分析1:

由于n 不超过231

-1,因此可以直接用int 类型来保存n ,位权可以采用移位来实现。

参考程序1(hsl): #include #include #include

int main(){

char str[1010];

while(scanf("%s",str)!=EOF){ if(strcmp(str,"0")==0) break; int l=strlen(str); int i,j,ans=0,t1=1,t2; for(i=l-1;i>=0;i--){ t1=t1<<1;

t2=t1-1;

ans+=(str[i]-'0')*t2; }

printf("%d\n",ans); }

return 0; }

解题分析2: 由于skew 数位数比较多,超过了int 的范围,因此我们只能采用字符数组的形式来接收输入。这里,最大的skew 二进制数对应到十进制数为231-1 = 2147483647,对应的skew 数为:1000000000000000000000000000000。一共31位,因此采用长度为32的字符数组即可。剩下的工作就是按位权展开求和就能得到想要的结果。 参考程序2:

#include

#include

#include

int main()

{

char str[32]; //读入的每个skew二进制数

while(scanf("%s",str)!=EOF)

{

int len=strlen(str);

int num=0; //对应的十进制数

if(len==1 && str[0]=='0') break;

int weight=2; //每位的权值为weight-1

int i;

for(i=len-1;i>=0;i--)

{

num+=(str[i]-'0')*(weight-1);

weight*=2;

}

printf("%d\n",num);

}

return 0;

}

5.5 例5004 周易

(来源:https://www.wendangku.net/doc/151473966.html, 2989)

问题描述:

有人说,中国古代的“周易”是二进制系统的起源,在该系统中,他们用“- -”表示1,“---”表示0。因此,二进制数字“011010”可以表述为“---\n- -\n- -\n---\n- -\n---\n”(符号“\n”表示换行)。现在的问题是如何把一个十进制数转换为“周易”中的二进制?

输入:

文件中包含多组测试数据。每个测试数据占一行,包括一十进制整数n(0 <= n <= 1000000)和表示二进制位数的k(0 < k <= 20 且n < 2^k)。

n=0,k=0表示输入结束。

输出:

对于每组测试数据,输出“周易”中对应的k行二进制数。每组测试数据之间输出一个空行。

输入样例:

7 3

0 3

26 6

0 0

- -

- -

- -

---

---

---

---

- -

- -

---

- -

---

解题分析:

这题首先要把十进制数转换为二进制数,这个可以采用除2取余,再逆序输出即可。其次就是如何输出k位,这里可能涉及到两种情况,一是k要大于实际二进制数的位数,那么前面需要用0来填补。二是k小于实际的位数,那么需要在输出时控制只输出前k位(这里不会出现这种情况,因为题目中已经明确了n < 2^k)。由于k>0且k<=20,因此我们可以使用一个20位长的整数数组来存储转换后的二进制数,初始化时全部为0。

参考程序(hxx):

#include

#include

int main()

{

int a[20];

int n,k;

int i;

while(1)

{

scanf("%d %d",&n,&k);

if(n==0 && k==0)

break;

for(i=0;i<20;i++)

a[i]=0;

i=0;

while(n)

{

a[i++]=n%2;

n=n/2;

}

for(i=k-1;i>=0;i--)

if(a[i]==1)

printf("- -\n");

else

printf("---\n");

}

printf("\n");

}

return 0;

}

5.6 例5005 奶牛计算器

(来源:https://www.wendangku.net/doc/151473966.html, 3191)

问题描述:

由于缺乏数学经验,奶牛想建立一个计算机器(它被称为Cowmpouter),使用二进制数字(基数为2),但它是建立在-2的基础上。他们非常高兴,因为在-2进制表示的数字中不需要符号位。

你知道基数的权值都是从1开始的(0位),然后从右到左依次为基数1次方,基数2次方等等。在-2进制中,其权值从右到左,依次为1,-2,4,-8,16,-32,…。因此,从1计数依次是:1,110,111,100,101,11010,11011,11000,11001等等。

很怪异的是,负数也那个用1和0表示,但没有符号位。从-1向下计数依次为:11,10,1101,1100,1111等等。

请帮助奶牛把普通的十进制整数(范围为:-2,000,000,000到2,000,000,000)转换为-2进制对应的数。

输入:

输入只有一行,一个需要转换为-2进制的十进制整数。

输出:

对应的-2进制的数,没有前导0,0就表示0本身,只用1个0。

输入样例:

-13

输出样例:

110111

解题分析:

此题的解法基于以下几点:

(1)如果一个数是奇数,那么它的二进制形式的最后一位肯定是1,我们可以去掉此1,就是(x-1)/-2,进入(2)。

(2)如果一个数的最后一位为0 ,我们可以把这个数右移(可以类比以2 为基的二进制数的操作)一位,然后它的二进制的倒数第二个数就成了最后一个,就是x=x/-2,然后进入(1)迭代,直到变为0。

参考程序(hxx):

#include

#include

char cache[100];

int cnt;

void reverse()

{

int i;

char tmp;

for(i=0;i

{

tmp=cache[cnt-i-1];

cache[cnt-i-1]=cache[i];

cache[i]=tmp;

}

}

int main()

{

scanf("%d",&value);

if(value==0)

{

printf("0");

goto end;

}

while(value!=1)

{

if(abs(value)%2!=0)

{

cache[cnt++]='1';

value=(value-1)/(-2);

}

else

{

cache[cnt++]='0';

value=value/(-2);

}

}

reverse();

cache[cnt]='\0';

printf("1%s",cache);

end:;

return 0;

}

5.7 例5006 计算器设计

(来源:https://www.wendangku.net/doc/151473966.html, 1546/https://www.wendangku.net/doc/151473966.html, 1334)

问题描述:

Really Neato计算器公司最近邀请你的团队为他们设计一款超级Neato一代计算器。作为计算机科学家,你建议该计算器能够在各种进制之间进行转换。他们认为这是一个很好的想法,并要求你的团队先给出实现进制转换的算法原型。公司经理告诉你,该计算器应该具有以下一些特征:

(1)可以显示7位;

(2)按键除了数字0到9外,还包括大写字母A到F;

(3)支持2~16进制。

输入:

输入文件中的每行为一个进制转换,包括3个数,第1个数是原进制下的一个整数,第2个数就是原进制,第3个数是转换后的进制。这3个数的两边可能有一个或多个空格。输入数据一直到文件结尾。

输出:

实现所有的进制转换,转换后的数右对齐到7位显示。如果转换后的数的位数太多,超过7位,则输出“ERROR”,也是右对齐到。

输入样例:

1111000 2 10

1111000 2 16

2102101 3 10

2102101 3 15

12312 4 2

1A 15 2

1234567 10 16

ABCD 16 15

输出样例:

120

78

1765

7CA

ERROR

11001

12D687

D071

参考程序(zzg):

#include

#include

long b2ten(char * x,int b);

int main()

{

char numsrc[10],numdest[10]; //用来存储读入的数和转换后的数char temp[10];

char error[10]="ERROR";

long num;

int src,dest; //转换前的进制和转换后的进制

int i,j;

//freopen("in.txt","r",stdin);

while(scanf("%s%d%d",numsrc,&src,&dest)!=EOF)

{

//先把src进制的数转换为10进制数,存放到temp中

num=b2ten(numsrc,src);

if(dest==10)

{

if(num>9999999)

printf("%7s\n",error);

else

printf("%7d\n",num);

}

else

{

i=0;

while(num)

{

if(num%dest<10)

numdest[i++]=num%dest+'0';

else

{

switch(num%dest)

{

case 10:

numdest[i++]='A';

break;

case 11:

numdest[i++]='B';

break;

case 12:

numdest[i++]='C';

break;

case 13:

numdest[i++]='D';

break;

case 14:

numdest[i++]='E';

break;

case 15:

numdest[i++]='F';

break;

}

}

num/=dest;

}

numdest[i]='\0';

if(strlen(numdest)>7)

printf("%7s\n",error);

else //逆序输出

{

j=0;

for(i=strlen(numdest)-1;i>=0;i--)

temp[j++]=numdest[i];

temp[j]='\0';

printf("%7s\n",temp);

}

}

}

return 0;

}

//把x中存放的数转换为b进制下的数返回

long b2ten(char * x,int b)

{

int ret=0;

int len=strlen(x);

int i;

for(i=0;i

{

ret*=b;

if((x[i]-'0')<=9)

ret+=x[i]-'0';

else

{

switch(x[i])

{

case 'A':

ret+=10;

break;

case 'B':

ret+=11;

break;

case 'C':

ret+=12;

break;

case 'D':

ret+=13;

break;

case 'E':

ret+=14;

break;

case 'F':

ret+=15;

break;

}

}

}

return (long)ret;

}

5.8 例5007 回文数

(来源:https://www.wendangku.net/doc/151473966.html, 1078)

问题描述:

如果一个数从左往右读和从右往左读都是一样的话,那么我们就称它是一个回文数。例如,75457就是一个回文数。

当然,这种性质要取决于这个数是在什么进制下。例如,17在十进制下不是一个回文数,但在二进制下(10001)则是一个回文数。

题目要求你来验证给定的数在2~16进制中的哪些进制下是否是回文数。

输入:

输入文件包含了若干个十进制整数n,0

输出:

如果整数i在某些进制下是回文数,则输出“Number i is palindrom in basis”,然后分别输出这些进制,其中i是给定的整数。如果在2~16进制下都不是回文数,则输出“Number i is not palindrom”。

输入样例:

17

19

输出样例:

Number 17 is palindrom in basis 2 4 16

Number 19 is not a palindrom

解题分析:

枚举2-16进制,在该进制下分解n,得到n的每一位,然后再判断是否为回文数字。参考程序(hsl):

#include

#include

#include

int main(){

int num;

bool is[20];

int a[40];

while(scanf("%d",&num),num){

memset(is,0,sizeof(is));

int i,j,k;

bool f1=0,f2=0;

for(i=2;i<=16;i++){//枚举2-16中的每一个数,判断num在此进制下是否为回文int temp=num;

j=0;

while(temp){//按照i进制分解,每位存放在数组a中

a[j++]=temp%i;

temp=temp/i;

}

f2=0;

for(k=0;k

if(a[k]!=a[j-1-k]){

f2=1;

break;

}

}

if(!f2){

if(!f1) f1=1;

is[i]=1;

}

}

if(!f1){

printf("Number %d is not a palindrom\n",num);

}else{

printf("Number %d is palindrom in basis",num);

for(i=2;i<=16;i++){

if(is[i]) printf(" %d",i);

}

printf("\n");

}

}

return 0;

}

各种进制之间转换方法

各进制转换方法(转载) 一、计算机中数的表示: 首先,要搞清楚下面3个概念 ?数码:表示数的符号 ?基:数码的个数 ?权:每一位所具有的值 请看例子: 数制十进制二进制八进制十六进制 数码0~9 0~1 0~7 0~15 基10 2 8 16 权10o,101,102,…2o,21,22,…8o,81,82,…16o,161,162,…特点逢十进一逢二进一逢八进一逢十六进一 十进制4956= 4*103+9*102 +5*101+6*10o 二进制1011=1*23+0*22 +1*21+1*2o 八进制4275=4*83+2*82 +7*81+5*8o 十六进制81AE=8*163+1*162 +10*161+14*16o

二、各种进制的转换问题 1.二、八、十六进制转换成十进制 2.十进制转换成二、八、十六进制 3.二进制、八进制的互相转换 4.二进制、十六进制的互相转换 1、二、八、十六进制转换成十进制 方法:数码乘以相应权之和 2、十进制转换成二、八、十六进制 方法:连续除以基,直至商为0,从低到高记录余数

3、二进制、八进制的互相转换 方法: ?二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制 ?八进制转换成二进制:用3位二进制数代替每一位八进制数 例(1101001)2=(001,101,001)2=(151)8 例 (246)8=(010,100,110)2=(10100110)2 4、二进制、十六进制的互相转换 方法: ?二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制 ?十六进制转换成二进制:用4位二进制数代替每一位十六进制数 例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16 例 (4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2 三、各种进制数的运算

十进制数与十六进制数的转换方法

若十进制数23785转为十六进制,则用23785/16=1486余9,1486/16=92余14,92/16=5余12,5/16=0余5,十六进制中,10对应为a、11对应为b、。。。。。。、15对应为f,再将余数倒写为5ce9,则十进制23785=十六进制5ce9 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数X (X 大于等于0,并且X小于等于15,即:F)表示的大小为X * 16的N次方。 假设有一个十六进数2AF5, 那么如何换算成10进制呢? 用竖式计算:2AF5换算成10进制: 第0位:5 * 16^0 = 5 第1位:F * 16^1 = 240 第2位:A * 16^2 = 2560 第3位:2 * 16^3 = 8192 + ------------------------------------- 10997 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 二进制的1101转化成十进制 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 转化成十进制要从右到左用二进制的每个数去乘以2的相应次方不过次方要从0开始 十进制转二进制:用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 1/2 = 0 余1 故二进制为100101110 二进制转八进制 在把二进制数转换为八进制表示形式时,对每三位二进制位进行分组,应该从小数点所在位置分别向左向右划分,若整数部分倍数不是3的倍数,可以在最高位前面补若干个0;对小数部分,当其位数不是的倍数时,在最低位后补若干个0.然后从左到右把每组的八进制码依次写出,即得转换结果. 你算一下就知道了啊比如110=2^2+2+0=6 二进制转十六进制 要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,分的不够的前边补零,用四位数的二进制数来代表一个16进制。转换表如下,括号内为十六进制 0000(0)0001 (1)0010 (2)0011 (3)0100 (4)0101 (5)0110 (6)0111 (7)1000 (8)1001 (9)1010(A)1011 (B)

进制之间的转换

--进制之间的转换-- 介绍:进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的tally mark计数)。对于任何一种进制---X进制,就表示每一位置上的数运算时都是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。 --常见的几种进制 二进制(B)十进制(D)十六进制(H)八进制(O) 1.二进制 二进制有两个特点:它由两个数码0、1组成,二进制的规律是逢二进一。 -转换。 a.将二进制转换为十进制。 例子:将二进制数10111.1011转换为十进制 解析: 小数点前 1 0 1 1 ------ 转换为十进制 1×23 0×22 1×21 1×20 ------ 8+0+2+1=11 小数点后1 0 1 1 ------ 转换为十进制 1×2-1 0×2-21×2-31×2-4 ---- 0.5+0+0.125+0.0625=0.6875 则,二进制1011.1011转换为十进制数为 11+0.6875=11.6875. (1011.1011) B =(11.6875) D b.将二进制转换为八进制。 例子:将二进制数10111.1011转换为八进制 解析: (由小数点开始,向两边每3个分为一组) 001 011 .101 100 (按照二进制转十进制的算法,算出每三个所对应的十进制数) 1 3 . 5 4 则,(1011.1011) B =(13.54) O c.将二进制转换为十六进制。 例子:将二进制数10111.1011转换为八进制解析:

各种进制之间转换方法

各进制转换方法(转载)一、计算机中数的表示: 首先,要搞清楚下面3个概念 ?数码:表示数的符号 ? 基:数码的个数 ?权:每一位所具有的值

、各种进制的转换问题 1. 二、八、十六进制转换成十进制 2. 十进制转换成二、八、十六进制 3. 二进制、八进制的互相转换 4. 二进制、十六进制的互相转换 1、二、八、十六进制转换成十进制 方法:数码乘以相应权之和 例(HloJ-l/25+lx24+l/23+0/22+ h2:+h20 -(59)10 例(136)8=lx82+3x8l+6x8°=(94)10 例(1F2^)1S=1X163+15X16S +2\16] + 10/16° = (7978)10 2、十进制转换成二、八、十六进制 方法:连续除以基,直至商为0,从低到高记录余数

例把十进制数159转换成八进制数 8| 19 8辽 (159)IO =(237)8 例把十进制数59转换成二进制数 (59)IO =(111O11)2 2 余余余余余余 8 159

例把十进制数459转换成十六进制数 u | 1| C| B (459)io=(1CB)ib ' 3、二进制、八进制的互相转换 方法: *二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制*八进制转换成二进制:用3位二进制数代替每一位八进制数 例(1101001)2=(001,101,001)2=(151)8 例(246)8=(010,100,110)2=(10100110)2 4、二进制、十六进制的互相转换 方法: 二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制 *十六进制转换成二进制:用4位二进制数代替每一位十六进制数 例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16 例(4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2 三、各种进制数的运算 方法:逢满进具体计算与平时十进制的计算类似,以十六进制为例: 加法:

十进制数与十六进制数的转换方法

一,十进制转换十六进制 若十进制数23785转为十六进制,则用 23785/16=1486余9, 1486/16=92余……14, 92/16=5余………….12, 5/16=0余……………..5,十六进制中,10对应为a、11对应为b、。。。。。。、15对应为f,再将余数倒写为5ce9,则十进制23785=十六进制5ce9 二,十六进制转换十进制 十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方…… 所以,在第N(N从0开始)位上,如果是是数X (X 大于等于0,并且X小于等于15,即:F)表示的大小为X * 16的N次方。 假设有一个十六进数2AF5, 那么如何换算成10进制呢? 用竖式计算:2AF5换算成10进制: 第0位:5 * 16^0 = 5 第1位:F * 16^1 = 240 第2位:A * 16^2 = 2560 第3位:2 * 16^3 = 8192 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 三,二进制的1101转化成十进制 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 转化成十进制要从右到左用二进制的每个数去乘以2的相应次方不过次方要从0开始 十进制转二进制:用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 1/2 = 0 余1 故二进制为100101110 四,二进制转八进制 在把二进制数转换为八进制表示形式时,对每三位二进制位进行分组,应该从小数点所在位置分别向左向右划分,若整数部分倍数不是3的倍数,可以在最高位前面补若干个0;对小数部分,当其位数不是的倍数时,在最低位后补若干个0.然后从左到右把每组的八进制码依次写出,即得转换结果. 你算一下就知道了啊比如110=2^2+2+0=6 五,二进制转十六进制 要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,分的不够的前边补零,用四位数的二进制数来代表一个16进制。转换表如下,括号内为十六进制 0000(0)0001(1)0010(2)0011(3)0100(4)0101(5) 0110(6)0111(7)1000(8)1001(9)1010(A)1011(B) 1100(C)1101(D)1110(E)1111(F) 例如:10101011划分为1010 1011,根据转换表十六进制为AB

二进制,八进制十进制十六进制之间数据转换

二进制,八进制十进制十六进制之间数据转换 十进制转二进制(整数及小数部分): 1、把该十进制数,用二因式分解,取余。 以235为例,转为二进制 235除以2得117,余1 117除以2得58,余1 58除以2得29,余0 29除以2得14,余1 14除以2得7,余0 7除以2得3,余1 3除以2得1,余1 从得到的1开始写起,余数倒排,加在它后面,就可得11101011。 2、把十进制中的小数部份,转为二进制。 把该小数不断乘2,取整,直至没有小数为止,注意不是所有小数都能转为二进制! 以0.75为例, 0.75剩以2得1.50,取整数1 0.50剩以2得1,取整数1,顺序取数就可得0.11。 1、二进制数、八进制数、十六进制数转十进制数 有一个公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数。个位,N=1;十位,N=2...举例:110B=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6D 110Q=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72D 110H=1*16的2次方+1*16的1次方+0*16的0次方=256+16+0=272D 2、十进制数转二进制数、八进制数、十六进制数 方法是相同的,即整数部分用除基取余的算法,小数部分用乘基取整的方法,然后将整数与小数部分拼接成一个数作为转换的最后结果。 例:见四级指导16页。 3、二进制数转换成其它数据类型

3-1二进制转八进制: 从小数点位置开始,整数部分向左,小数部分向右,每三位二进制为一组用一位八进制的数字来表示,不足三位的用0补足, 就是一个相应八进制数的表示。 010110.001100B=26.14Q 八进制转二进制反之则可。 3-2二进制转十进制: 见1 3-3二进制转十六进制: 从小数点位置开始,整数部分向左,小数部分向右,每四位二进制为一组用一位十六进制的数字来表示, 不足四位的用0补足,就是一个相应十六进制数的表示。 00100110.00010100B=26.14H 十进制转各进制 要将十进制转为各进制的方式,只需除以各进制的权值,取得其余数,第一次的余数当个位数,第二次余数当十位数,其余依此类推,直到被除数小于权值,最后的被除数当最高位数。 一、十进制转二进制 如:55转为二进制 2|55 27――1个位 13――1第二位 6――1第三位 3――0第四位 1――1第五位 最后被除数1为第七位,即得110111 二、十进制转八进制

进制转换计算+ASCII表

一、二进制转化成其他进制 1. 二进制(BINARY)——>八进制(OCTAL) 例子1:将二进制数(10010)2转化成八进制数。 (10010)2=(010 010)2=(2 2)8=(22)8 例子2:将二进制数()2转化为八进制数。 ()2=(0. 101 010)2=(0. 5 2)8=()8 诀窍:因为每三位二进制数对应一位八进制数,所以,以小数点为界,整数位则将二进制数从右向左每3位一隔开,不足3位的在左边用0填补即可;小数位则将二进制数从左向右每3位一隔开,不足3位的在右边用0填补即可。 2. 二进制(BINARY)——>十进制(DECIMAL) 例子1:将二进制数(10010)2转化成十进制数。 (10010)2=(1x24+0x23+0x22+1x21+0x20)10=(16+0+0+2+0)10=(18) 10 例子2:将二进制数()2转化为十进制数。 ()2=(0+1x2-1+0x2-2+1x2-3+0x2-4+1x2-5)10=(0+++++)10=()10 诀窍:以小数点为界,整数位从最后一位(从右向左)开始算,依次列为第0、1、2、3………n,然后将第n位的数(0或1)乘以2的n-1次方,然后相加即可得到整数位的十进制数;小数位则从左向右开始算,依次列为第1、2、3……..n,然后将第n位的数(0或1)乘以2的-n次方,然后相加即可得到小数位的十进制数(按权相加法)。

3. 二进制(BINARY)——>十六进制(HEX) 例子1:将二进制数(10010)2转化成十六进制数。 (10010)2=(0001 0010)2=(1 2)16=(12) 16 例子2:将二进制数()2转化为十六进制数。 ()2=(0. 1010 1000)2=(0. A 8)16=()16 诀窍:因为每四位二进制数对应一位十六进制数,所以,以小数点为界,整数位则将二进制数从右向左每4位一隔开,不足4位的在左边用0填补即可;小数位则将二进制数从左向右每4位一隔开,不足4位的在右边用0填补即可。 (10010)2=(22)8=(18) 10=(12)16 ()2=()8=()10=()16 二、八进制转化成其他进制 1. 八进制(OCTAL)——>二进制(BINARY) 例子1:将八进制数(751)8转换成二进制数。 (751)8=(7 5 1)8=(111 101 001)2=(1)2 例子2:将八进制数()8转换成二进制数。 ()8=(0. 1 6)8=(0. 001 110)2=()2 诀窍:八进制转换成二进制与二进制转换成八进制相反。

各种进制转换方法

一、二进制转十进制 由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为按权相加法。 二、十进制转二进制 十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。 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)2 2 89 2 44 1 2 22 0 2 11 0 2 5 1 2 2 1 2 1 0 0 1 十进制小数转二进制数:乘以2取整,顺序输出例: (0.625)10= (0.101)2 0.625 X 2 1.25 X 2 0.5 X 2 1.0 2.八进制与二进制的转换 例:将八进制的37.416转换成二进制数: 37 . 4 1 6 011 111 .100 001 110 即:(37.416)8 =(11111.10000111)2

各种进制之间的转换方法

各种进制之间的转换方法 ⑴二进制B转换成八进制Q:以小数点为分界线,整数部分从低位到高位,小数部分从高位到低位,每3位二进制数为一组,不足3位的,小数部分在低位补0,整数部分在高位补0,然后用1位八进制的数字来表示,采用八进制数书写的二进制数,位数减少到原来的1/3。 例:◆二进制数转换成八进制数: = 110 110 . 101 100B ↓↓ ↓ ↓ 6 6 . 5 4 = ◆八进制数转换成二进制数: 3 6 . 2 4Q ↓ ↓ ↓ ↓ 011 110 . 010 100 = ◆ 低位,每4位二进制数为一组,不足4位的,小数部分在低位补0,整数部分在高位补0,然后用1位十六进制的数字来表示,采用十六进制数书写的二进制数,位数可以减少到原来的1/4。 例:◆二进制数转换成十六进制数: .100111B = 1011 0101 1010 . 1001 1100B ↓ ↓ ↓ ↓ ↓ B 5 A . 9 C = 5A ◆十六进制数转换成二进制数: = A B . F EH ↓ ↓ ↓ ↓ 1010 1011. 1111 1110 = .1111111B 先把八进制数Q转换成二进制数B,再转换成十六进制数H。 例:◆八进制数转换成十六进制数: = 111 100 000 010 . 100 101B = .100101B = 1111 0000 0010 . 1001 0100B = F 0 2 . 9 4H = ◆十六进制数转换成八进制数: = 0001 1011 . 1110B = = 011 011 . 111B = 3 3 . 7Q = ⑷二进制数B转换成十进制数D:利用二进制数B按权展开成多项式和的表达式,取基数为2,逐项相加,其和就是相应的十进制数。

什么是进制以及进制的转换

1、什么是进制 十进制就是逢十进一:0~9 二进制就是逢二进一:0~1 十六进制。。。:0~9、A~F(可以理解成10~15) 生活中用到进制的例子: 一周七天:七进制 一年十二个月:十二进制 一小时六十分钟:六十进制 电脑中的数据: 二进制 进制的转换 八进制转十进制:八进制0235转为十进制157十六进制转十进制也差不多 83 8281 80 ↓↓↓↓ 0 2 3 5 0+2×64+3×8+5×1 157 十进制转八进制:十进制27转为八进制33 十进制转六十进制也差不多 8|27 3 8|4 3 反正记住一般,低进制转高进制,就乘加,高进制转低进制,就取余, 除十六进制,我们经常用的就是这四种进制 二进制到十六进制转换 方法:从右向左,四位一段,分别转化,不够四位的补零 意思就是一位十六进制用四位二进制数表示,如果不够四位,前面用零补齐 比如116 = 00012十六进制的1和二进制1 表示形式就是1,不过一般用前面的那种方法表示便于运算 例:01011102→(0010,1110) 左补一个零,便于运算 (2 ,E )16 十六进制转二进制 D2C16= (13 ,2 ,12)16 (1101,0010,1100) = 1101001011002中间那段四位二进制数前面补的两个0不能掉而八进制就是三位一段,类似上方,不过就是三位一段 例: 01011102= (000,101,110) 第一段三位二进制数左补两个零 (0, 5, 6) 0568 321= (3,2,1) (011,010,001) 110100012 不存在十六进制与八进制的直接相互转化,都是以二进制or 十进制等为中间进制来进行转换的 如:D2C16= 1101001011002= 64548 二进制与十进制的相互转化,不需要让二进制以多位为一段,只需要一位一位的算就好 其他进制也一样

几种进制的解释与转化说明

几种进制的解释与转化说明 一)、数制 计算机中采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径、节省设备等优点,为了便于描述,又常用八、十六进制作为二进制的缩写。 一般计数都采用进位计数,其特点是: (1)逢N进一,N是每种进位计数制表示一位数所需要的符号数目为基数。 (2)采用位置表示法,处在不同位置的数字所代表的值不同,而在固定位置上单位数字表示的值是确定的,这个固定位上的值称为权。 在计算机中:D7 D6 D5 D4 D3 D2 D1 D0 只有两种0和1 8 4 2 1 二)、数制转换 不同进位计数制之间的转换原则:不同进位计数制之间的转换是根据两个有理数如相等,则两数的整数和分数部分一定分别相等的原则进行的。也就是说,若转换前两数相等,转换后仍必须相等。 有四进制 十进制:有10个基数:0 ~~ 9 ,逢十进一 二进制:有2 个基数:0 ~~ 1 ,逢二进一 八进制:有8个基数:0 ~~ 7 ,逢八进一 十六进制:有16个基数:0 ~~ 9,A,B,C,D,E,F (A=10,B=11,C=12,D=13,E=14,F=15) ,逢十六进一 1、数的进位记数法 N=a n-1×p n-1+a n-2×p n-2+…+a2×p2+a1×p1+a0×p0 2、十进制数与P进制数之间的转换 ①十进制转换成二进制:十进制整数转换成二进制整数通常采用除2取余法,小数部分乘2取整法。例如,将(30)10转换成二进制数。 将(30)10转换成二进制数 2| 30 ….0 ----最右位 2 15 (1) 2 7 (1) 2 3 (1) 1 ….1 ----最左位 ∴(30)10=(11110)2 将(30)10转换成八、十六进制数 8| 30 ……6 ------最右位 3 ------最左位 ∴(30)10 =(36)8 16| 30 …14(E)----最右位 1 ----最左位 ∴(30)10 =(1E)16 3、将P进制数转换为十进制数

进制转换表

Plc课程知识点 一基础知识 1 数字电路基础 2 plc基础 3 编程基础 二编程入门 1逻辑控制程序编制2定时器程序编制3计数器程序编制三编程软件及仿真软件的使用 二、八、十、十六进制数 数值=6×1000+5×100+0×10+5×1=6505

B1011=1×8+0×4+1×2+1×0=K11 H3AE=3×256(16的2次方)+A(10)×16(16的一次方)+E(14)×1(16的零次方)=K942 8421BCD码 用四位二进制数表示十进制数的编码方式称为BCD码又称二—十进制。 最长用的是8421BCD码 十进制数58的二进制数表示和BCD码表示 1.二进制数表示 K58=B111010 58/2=29 0 29/2=14 (1) 14/2=7 0 7/2=3 (1) 3/2=1 (1) 1/2=0 (1) 2 。8421BCD码表示 5 8 0101 1000 K58=01011000BCD 格雷码 在各种控制系统的角度、长度测量和定位控制中,经常使用绝对式旋转编码器作为位置传感器,其算输出的二进制编码为格雷码。 格雷码是一种无权二进制编码,它的特点是任何相邻的吗组之间只有一位数位发生改变,是一种错误很少的可靠性编码。

十进制转化成N进制 口诀:除N取余,逆序排列 K58=B111010 58/2=29 0 29/2=14 (1) 14/2=7 0 7/2=3 (1) 3/2=1 (1) 1/2=0 (1) k8000=H1f40 8000/16=500 0 500/16=31 (4) 31/16=1 (15) 1/16=0 (1) k302=b100101110 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 1/2=0 (1) 十进制转化成二进制 例:K200=B? 200÷2=100.。。。。。。。0 LSD 100÷2=50.。。。。。。。。0 50÷2=25.。。。。。。。。。0 25÷2=12.。。。。。。。。。1 12÷2=6.。。。。。。。。。。0 6÷2=3.。。。。。。。。。。。0 3÷2=1.。。。。。。。。。。。1 1÷2=0.。。。。。。。。。。。1 MSD K200=B 1100 1000 十进制转化成16进制 例K8000=H?

各种进制之间的转换(可编辑修改word版)

一:十进制数转换成二进制数。 随便拿出一个十进制数“39”,(假如你今天买书用了39 元)先来把这个39 转换成2 进制数。 商余数步数39/2= 19 1 第一步 19/2= 9 1 (这里的19 是第一步运算结果的商)第二步 9/2= 4 1 (这里的9 是第二步运算结果的商)第三步 4/2= 2 0 (这里的4 是第三步运算结果的商)第四步 2/2= 1 0 (这里的2 是第四步运算结果的商)第五步 1/2= 0 1 (这里的1 是第五步运算结果的商)第六步 那么十进制数39 转换成2 进制数就是100111. 既39(10)=100111(2) 解析一:1. 当要求把一个10 进制数转换成2 进制数的时候,就用那个数一直除以2 得到商和余数。 2. 用上一步运算结果的商在来除以2,再来得到商和余数。 3. 就这样,一直用上一步的商来除以2,得到商和余数!那么什么时候停止呢? 4. 请看上述运算图,第六步的运算过程是用1 除以2.得到的商是0,余数是1. 那么请你记住,记好了啊共2 点。A: 当运算到商为“0”的时候,就不用运算了。B:1/2 的商为“0”余数为“1”。这个你要死记住,答案并不是0.5!答案就是商为“0”余数为“1”。你不用去思考为什么,记好了就行了! 5. 在上述图中你会清晰的看到每一步运算结果的余数,你倒着把它们写下来就是“100111”了。那么这个就是结果了。 6. 在上述图中符号“/”代表“除以”。 二:十进制数转换成八进制数。 随便拿出一个十进制数“358”,(假如你今天买彩票中了358 元)。358 是我们现实生活中所用10 进制表达出来的一个数值,转换成八进制数十多少?

计算机各种进制转换练习题(附答案)

1.十进制数 1000 对应二进制数为 ______ ,对应十六进制数为 ______ 。 供选择的答案 A :① 1111101010 ② 1111101000 ③ 1111101100 ④ 1111101110 B :① 3C8 ② 3D8 ③ 3E8 ④ 3F8 2.十进制小数为 0.96875 对应的二进制数为 ______,对应的十六进制数为 ______ 。 供选择的答案 A :① 0.11111 ② 0.111101 ③ 0.111111 ④ 0.1111111 B :① 0.FC ② 0.F8 ③ 0.F2 ④ 0.F1 3.二进制的 1000001 相当十进制的 ____ 。 ① 62 ② 63 ③ 64 ④ 65 4.十进制的 100 相当于二进制 _____ ,十六进制 ____ 供选择的答案 5.八进制的 100 化为十进制为 _____ ,十六进制的 100 化为十进制为 _____ 供选择的答案 A :① 80 ② 72 ③ 64 ④ 56 B :① 160 ② 180 ③ 230 ④ 256 6.十六进制数 FFF.CH 相当十进制数 ___ __ 。 ① 4096.3 ② 4096.25 ③ 4096.75 ④ 4095.75 7.2005 年可以表示为 __ ___ 年。 ① 7C5H ② 6C5H ③ 7D5H ④ 5D5H 9. _____________________________________________ 对于不同数制之间关系的描述,正确的描述为 供选择的答案 A :① 任意的二进制有限小数,必定也是十进制有限小数。 ② 任意的八进制有限小数,未必也是二进制有 限小数。 ③ 任意的十六进制有限小数,不一定是十进制有限小数。 ④ 任意的十进制有限小数,必然也是八进制有限小数。 10. __________________________________________ 二进制整数 1111111111转换为十进制数为 ____ ,二进制小数 0.111111 转换成十进制数为 ____________ A :① 1000000 B :① 100H ② 1100000 ②AOH ③ 1100100 ③ 64H ④ 1101000 ④10H 8. 二进制数 10000.00001 将其转换成八进制数 为 供选择的答案 _____ ;将其转换成十六进制数为 _____ A :① 20.02 B :① 10.10 ② 02.01 ② 01.01 ③ 01.01 ④ 02.02 ③ 01.04 ④ 10.08

最全的进制转换(新手必看)

进制转换对应表 十进制二进制八进制十六进制 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 6 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 16 10000 20 10 25 11001 31 19 26 11010 32 1A 31 11111 37 1F 32 100000 40 20 41 101001 51 29 42 101010 52 2A

1)概念 进制也就是进位制,是人们规定的一种进位方法。对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。 进位制/位置计数法是一种记数方式,故亦称进位记数法/位值计数法,可以用有限的数字符号代表所有的数值。可使用数字符号的数目称为基数(en:radix)或底数,基数为n,即可称n进位制,简称n进制。现在最常用的是十进制,通常使用10个阿拉伯数字0-9进行记数。 对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。 数制也称计数制,是指用一组固定的符号和统一的规则来表示数值的方法。计算机是信息处理的工具,任何信息必须转换成二进制形式数据后才能由计算机进行处理,存储和传输。 2)进制转换理论 A.2进制,用两个阿拉伯数字:0、1; B.8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7; C.10进制,用十个阿拉伯数字:0到9; D.16进制,16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F 这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。 E.二次方对照表 2N次方幂2N次方幂2N次方幂 1 2 6 64 11 2048 2 4 7 128 12 4096 3 8 8 256 13 8192 4 16 9 512 14 16384 5 32 10 1024 15 32768 F.10进制转换(2,8,16)进制

进制转换方法总结

信息的编码 再问学生计算机存储信息是不是都采用了二进制数二进制也存在缺点,二进制都用0和1, 而且位数太多, 不易理解, 也易出错。为描述方便常用八、十进制,十六进制数表示二进制数 在微机中,一般在数字的后面,用特定字母表示该数的进制。 十进制:日常生活中最常见的是十进制数,用十个不同的符号来表示:0、1、2、3、4、5、6、7、8、9。 基为:10 运算规则:逢十进一,借一当十 在十进制数的后面加大写字母D以示区别。 二进制:二进制数只有两个代码“0”和“1”,所有的数据都由它们的组合来实现。 基为:2 运算规则:“逢二进一,借一当二”的原则。 在八进制数据后加英文字母“B” 八进制:使用的符号:0、1、2、3、4、5、6、7; 运算规则:逢八进一; 基为:8 在八进制数据后加英文字母“O”, 十六进制:使用的符号:采用0~9和A、B、C、D、E、F六个英文字母一起共十六个代码。 运算规则:逢十六进一

基为:16 在十六进制数据后加英文字母“H”以示分别。 那么二进制数与八进制、十进制,十六进制数是怎么转换的呢 3、协作提高:用讲解法对二进制数与十进制数、十六进制数之间相互的转换的原理及方法(将二进制数字表示的位权值与十进制数字表示的位权值加以对比),叫几位学生到黑板上来做,其它同学在下面草稿纸上做。观察在黑板上做的同学的对错情况,要知道错,错在那里。 由N进制数转换成十进制数的基本做法是,把N进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。 各数制的权 如:十进制中,各位的权为10n-1 二进制中,各位的权为2n-1 十六进制中,各位的权为16n-1 八进制中,各位的权为8n-1 1)、二进制转换为十进制 各数制中整数部分不同位的权为“基的n-1次方(n为数值所在的位数,n的最小值取1)”,小数部分不同位的权值为“基的-n次方,从左向右,每移一位,幂次减1”。 二进制数的基数为2 例()2=()D

进制之间转换(含小数部分)

二、八、十、十六之间的转换 1、十进制与二进制之间的转换 (1)十进制转换为二进制,分为整数部分和小数部分 ①整数部分 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。下面举例: 例:将十进制的168转换为二进制 得出结果将十进制的168转换为二进制,(10101000)2 分析:第一步,将168除以2,商84,余数为0。 第二步,将商84除以2,商42余数为0。 第三步,将商42除以2,商21余数为0。 第四步,将商21除以2,商10余数为1。 第五步,将商10除以2,商5余数为0。 第六步,将商5除以2,商2余数为1。 第七步,将商2除以2,商1余数为0。 第八步,将商1除以2,商0余数为1。 第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000

(2)小数部分 方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分 为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数,下面举例: 例1:将0.125换算为二进制 得出结果:将0.125换算为二进制(0.001)2 分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25; 第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5; 第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0; 第四步,读数,从第一位读起,读到最后一位,即为0.001。 例2,将0.45转换为二进制(保留到小数点第四位)

进制数最新范文1转换成十进制数是 。

七、基础选择题 1. 二进制数转换成十进制数是( )。 A. B. C. D. 2. 下列叙述中,正确的一条是( )。 A. 存储在任何存储器中的信息,断电后都不会丢失 B. 操作系统是只对硬盘进行管理的程序 C. 硬盘装在主机箱内,因此硬盘属于主存 D. 磁盘驱动器属于外部设备 3. 英文OS指的是( )。 A. 显示英文的屏幕 B. 窗口软件 C. 操作系统 D. 磁盘操作系统 4. 数字符号0的ASCII码十进制表示为48,数字符号9的ASCII码十进制表示为( )。 A. 56 B. 57 C. 58 D. 59 5. 目前使用的微型计算机,其主要逻辑器件是由( )构成的。 A. 电子管 B. 晶体管 C. 中、小规模集成电路集成电路 D. 大规模、超大规模集成电路 6. 微机正在工作时电源突然中断供电,此时计算机( )中的信息全部丢失,并且恢复供电后也无法恢复这些信息。 A. ROM B. RAM C. 硬盘 D. 软盘 7. 与外存储器相比,内存储器的主要特征是( )。 A. 存储大量的信息 B. 存储正在运行的程序 C. 能存储程序和数据 D. 能长期保存信息 8. 所谓“裸机”是指( )。 A. 单片机 B. 单板机 C. 不装备任何软件的计算机 D. 只装备操作系统的计算机

9. 构成计算机的电子和机械的物理实体称为( )。 A. 计算机系统 B. 计算机硬件系统 C. 主机 D. 外设 10. 在表示存储器的容量时,1MB的准确含义是( )。 A. 1000KB B. 1024GM C. 1000B D. 1024KB 11. 微型计算机的结构原理是采用( )结构,它使CPU与内存和外设的连接简单化与标准化。 A. 总线 B. 星形连接 C. 网络 D. 层次连接 12. 指令构成的语言称为( )语言。 A. 汇编 B. 高级 C. 机器 D. 自然 13. 软件包括( )。 A. 程序 B. 程序及文档 C. 文档及数据 D. 算法及数据库结构 14. 编译程序的功能是( )。 A. 发现源程序中的语法错误 B. 改正源程序中的语法错误 C. 将源程序编译成目标程序 D. 将某一高级语言程序翻译成另一种高级语言程序 15. 解释程序是( )。 A. 将高级语言源程序翻译成机器语言的程序(目标程序) B. 将汇编语言源程序翻译成机器语言程序(目标程序) C. 对源程序边扫描边翻译执行 D. 对目标程序装配链接 16. 应用软件是指( )。 A. 所有能够使用的软件 B. 能被各应用单位共同使用的某种软件 C. 所有微机上都应用的基本软件 D. 专门为某一应用目的而编制的软件 17. 计算机发生“死机”故障时,重新启动机器的最适当的方法是( )。 A. 过30秒再开机 B. 复位启动 C. 冷启动 D. 热启动 18. 目前计算机上最常用的外存储器是( )。

进制转换规则

四、进制的转换 目标:熟悉各进制之间的转换规则,计算机中级考证也会考到。 要求做到给出一个十进制,能够做到各进制之间互相转换。 在编程中,我们的变量通常用10进制表示;不过,在计算机内存中,数据是以二进制的形式存在的,所以我们作为一个程序员应该要熟悉的掌握各进制之间的转换,本章不讲补码和反码的知识,有需要了解的自行百度学习。 计算机分二进制、八进制、十进制、十六进制 二进制:采用0和1表示//规则:逢二进一如:1010 八进制:采用0~7这八个数表示//规则:逢八进一,在程序中表示八进制要在这个数的前面加个0 如:055 十进制:采用0~9这10个数表示//规则:逢九进一如:95 十六进制:用16个阿拉伯数字表示,但我们只有0~9这十个数字,所以我们用A、B、C、D、E、F这五个数字表示10、11、12、13、14、15,字母不区分大小写。//规则:逢十六进一,在程序中表示16进制要在这个数的前方加上0x 如:0x6e 10进制转2进制: 例子:将十进制‘100 ’转成二进制 最后得出的二进制是:1100100 //将得出的余数倒过来写 转换规则:将10进制数除以2,得出的商继续除以2,直到商不够2为止,取余数,倒写,就是转换后的2进制数

例子:将二进制‘100’转换成十进制 第一步 1 0 0 第二步 2 1 0//二进制对应的下标,自右向左0开始 第三步1*2^2+0*2^1+0*2^0 = 4+0+0 = 4//2的0次方为1 最后得出的十进制是:4 转换规则:将二进制自右向左加上下标,0~n(n为二进制的位数减1),然后用二进制第1位的值*2^0+二进制第2位的值*2^1+二进制第n位的值+2^(n-1),最后相加的和就是计算出的十进制//二进制的位数是自右向左数的 10进制转8进制: 例子:将十进制‘100’转成八进制 最后得出的八进制是:144 //将得出的余数倒写 转换规则:将10进制数除以8,得出的商继续除以8,直到商不够8为止,取余数,倒写,就是转换后的8进制数 8进制转10进制: 例子:将八进制‘144’转成十进制 第一步 1 4 4 第二步 2 1 0//八进制对应的下标,自右向左0开始 第三步1*8^2+4*8^1+4*8^0 = 64 + 32 +4 = 100 最后得出的十进制是:100 转换规则:将八进制自右向左加上‘下标’,0~n(n为八进制的位数减1),然后用八进制第1位的值*8^0+八进制第2位的值*8^1+八进制第n位的值+8^(n-1),最后相加的和就是计算出的十进制//八进制的位数是自右向左数的

相关文档