数据结构课程设计——进制转换

数据结构课程设计——进制转换
数据结构课程设计——进制转换

数据结构课程设计

设计说明书

进制转换的实现

学生姓名JUG G

学号¥#··

班级Dota all star——成绩优秀

指导教师Puck

dota科学与技术

天灾元年 3 月 14 日

Dota all star

课程设计任务书

天灾元年—近卫戊年第二学期

专业:ganker 学号:sadofaiofo 姓名:

课程设计名称:数据结构课程设计

设计题目:进制转换的实现

完成期限:自天灾元年年 3 月 1 日至近卫戊年年 3 月14 日共 2 周

设计依据、要求及主要内容(可另加附页):

进制数制是人们利用符号进行计数的科学方法。数制有很多种,在计算机中常用的数制有:十进

制,二进制、八进制和十六进制。十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D,

E,F组成(它们分别表示十进制数0~15),十六进制数运算规律是逢十六进一,例如:十六进制数4AC8

可写成(4AC8)16,或写成4AC8H。

要求:

(1)输入一个十进制数N,将它转换成R进制数输出,并可以进行逆转换。

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

R<>10)。

(3)为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考

16进制(比如,10用A表示,等等)。

(4)界面友好。

指导教师(签字):教研室主任(签字):

批准日期:年月日

摘要

由于数制计算和不同数制之间转换的需要,设计了一个10进制转换其它进制(36进制以内)及逆转换的软件,该软件具有简单的将10进制数转换成2、8、16进制数以及较复杂的高进制数的转换和逆转功能。本软件采用C语言编写以VC++作为软件开发环境,采用顺序栈存储方式来存储运算中的数位,借助栈后进先出的特点,易于结果输出。操作简单,界面清晰,易于为用户所接受。

关键词:进制转换;顺序栈;逆转换

目录

1 课题描述 (1)

2 问题分析和任务定义 (2)

4 详细设计 (7)

5 程序编码 (8)

6 程序调试与测试 (13)

7 结果分析 (15)

8 总结 (16)

参考文献 (17)

1 课题描述

数制有很多种,在计算机中常用的数制有:十进制,二进制、八进制和十六进制。十六进制数有两个基本特点:它由十六个字符0~9以及A,B,C,D,E,F组成(它们分别表示十进制数0~15),十六进制数运算规律是逢十六进一,例如:十六进制数4AC8可写成(4AC8)16,或写成4AC8H。更大一些的数制则扩展十六进制未用的其他大写字母。

顺序栈是顺序存储结构的栈,是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。同时附设栈顶指针top和栈基指针base,来方便栈内数据元素的存取和栈的扩充。

2 问题分析和任务定义

问题分析:

编写进制转换及其逆转,其算法过程恰好是结果的逆序,因此建立一个顺序栈将计算过程中得到的数位顺序进栈,则按出栈顺序就会输出对应的转换结果。逆转程序借助字符数组按顺序将每个数位转换成十进制数后求和,得到逆转结果例如:11转换成二进制数

11%2=1; 11/2=5;1入栈;

5%2=1; 5/2=2;1入栈;

2%2=0; 2/2=0;0入栈;

被除数不为0;

按顺序出栈,得到结果为110;

任务定义:

1)画出流程图;

2)任意建立一个容量为20个栈元素的空栈;

3)将十进制数与要转进制先求余,将余数顺序入栈;

4)阐明测试方法,写出完整的运行结果;

5)撰写课程设计说明书。

3 逻辑设计

(1)ADT Stack{

数据对象:D={ai | ai ∈ElemSet,i=1,2,…,n, n≥0 }

数据关系:R1={ | ai-1,ai∈D,i=2,…,n}

基本操作:

Inistack(&S)

操作结果:构造一个空栈S。

stackEmpty(&S)

初始条件:栈S已存在。

操作结果:判断栈S是否为空,若为空,则返回1;否则返回0.

push(&S,x)

初始条件:栈S已存在。

操作结果:插入元素x为新的栈顶元素。

Pop(&S。&e)

初始条件:栈S已存在且非空。

操作结果:删除S的栈顶元素,并用y返回其值。

}ADT Stack

(2)主函数流程图如图3.2所示

图3.1 创建主函数流程图

图3.2十进制转换其他进制数算法流程图

图3.3倒序输出算法流程图

4 详细设计

本程序主要有三个算法:

一、十进制整数转换其他进制数,其主要思路为:

例如:11转换成二进制数

11%2=1;11/2=5;

5%2=1;5/2=2;

2%2=0;2/2=0;

被除数不为0;

转换结果为110;

二、十进制小数转换其他进制数,其主要思路为:

例如:0.125转换成二进制小数

0.125*2=0.25;取结果的整数为0;

0.25*2=0.5;取结果的整数为0;

0.5*2=1.0;取结果的整数为1;

小数部分不为0;

转换结果为0.001;

三、其他数制转换十进制数,其主要思路为:

例如:二进制数10.1转换成十进制数

1*21=2;

0*20=1;

1*21 =0.5;

逆转数字存储在数组中,最后的结束符’\0’,为标志。

转换结果为2+1+0.5=3.5;

5 程序编码

#include

#include

#include

#define STACK_INIT_SIZE 20

#define STACKINCREMENT 10

typedef int SElemType;

typedef struct{

SElemType *base,*top;

int stacksize;

}SqStack;

int InitStack(SqStack &S){

S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));

if(!S.base)exit(0);

S.top=S.base;

S.stacksize=STACK_INIT_SIZE;

return 1;

}

int Push(SqStack &S,SElemType e){

if(S.top-S.base>=S.stacksize){

S.base=(SElemType

*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));

if(!S.base)exit(0);

S.top=S.base+S.stacksize;

S.stacksize+=STACKINCREMENT;

}

*S.top++=e;

return 1;

}

int Pop(SqStack &S,SElemType &e){

if(S.top==S.base)return 0;

e=*--S.top;

return 1;

}

int StackEmty(SqStack S){

if(S.top==S.base)return 1;

else return 0;

}

void XSZZ(double n,int T){

int i=0;

double a;

if(n==0.0)printf("00000");

while(n!=0.0)

{

a=T*n;

n=a-(int)a;

if(a>=10)

{

printf("%c",((int)a-10+'A'));

i++;

}

else{

printf("%d",((int)a>0?(int)a:0));

i++;

}

if(i==5)break;

}

}

int NZ(){

int i=0,j,T,k=0;

double sum=0;

char a[20],X;

getchar();

printf("输入转换数");

while((a[i]=getchar())!='\n'){

if((a[i]<='9'&&a[i]>='0')||(a[i]<='Z'&&a[i]>='A')||a[i]=='.');

else {break;}

if(a[i]=='.')k=i;

i++;}

k=k?k:i;

if(a[i]!='\n'){

while(getchar()!='\n');

printf("输入有误");

return 0;}

a[i]='\0';

a[k]='\0';

printf("输入转换数的进制");

scanf("%d%c",&T,&X);

if((!(T>1&&T<36))||X!='\n'){

while(getchar()!='\n');

printf("输入有误");printf("sdf %c",X);

return 0;}

for(j=0;j

{

if(((a[j]-'0'>=T)&&(a[j]<='9'))||((a[j]-'A'+10>=T)&&(a[j]>'9')))

{

printf("输入有误!");return 1;

}

if(a[j]>='A')

sum+=((a[j]-'A'+10)*pow(T,k-j-1));

else

sum+=((a[j]-'0')*pow(T,k-j-1));

}

for(j=k+1;j

{

if(((a[j]-'0'>=T)&&(a[j]<='9'))||((a[j]-'A'+10>=T)&&(a[j]>'9')))

{

printf("输入有误!");return 1;

}

if(a[j]>='A')

sum+=((a[j]-'A'+10)*pow(T,k-j));

else

sum+=((a[j]-'0')*pow(T,k-j));

}

if(!(((a[j]-'0'>=T)&&(a[j]<='9'))||((a[j]-'A'+10>=T)&&(a[j]>'9'))))printf("结果为%f",sum);

return 1;

}

int ZZ(){

int N,T,i=0,a;

double Z,M;

char X[10];

SElemType e;

SqStack S;

InitStack(S);

printf("输入转换数:");

scanf("%lf%c",&Z,&X[0]);

if(X[0]!='\n'){ while(X[i]!='\n'){

i++;

printf("输入有误!");return 1;}

printf("输入转换进制:");

scanf("%d%c",&T,&X[0]);

if(T<36&&T>1&&X[0]=='\n')

{printf("%c",X[0]);

N=(int)Z;

M=Z-N;

while(N)

{

if(T>10)

{

a=N%T;

if(a>=10)

{

a=a-10+'A';

Push(S,a);

}

else Push(S,N%T);

}

else Push(S,N%T);

N=N/T;

}

printf("结果为:");

if(StackEmty(S))printf("0");

while(!StackEmty(S))

{

Pop(S,e);

if(e>=10) printf("%c",e);

else printf("%d",e);

}

printf(".");

XSZZ(M,T);

}

else

{printf("输入有误\n");i=0;

while(X[i]!='\n'){

i++;

scanf("%c",&X[i]);}

}}

main()

{

int choice;

char X;

do{printf("Press1:十进制转换其他进制数\nPress2:其他进制数转换十进制数\n");

scanf("%d",&choice);

switch(choice){

case 1: ZZ();break;

case 2:NZ();break;

default:printf("输入有误!");

}

printf("\n continue ? y/n\n");

scanf("\t%c",&X);

while(X!='n'&&X!='y'){

printf("输入有误!\n请重新输入:");

scanf("\t%c",&X);

}

}while(X=='y');

return 0;

}

6 程序调试与测试

(1)输入十进制14.25转换成十六进制数为E.4.

图6.1十进制转换其他进制数运行图

(2)输入二进制1.1转换为十进制1.5

图6.2其他进制转换十进制数运行图

(3)输入数字字符混合体(非法字符)程序返回错误提示

图6.3程序健壮性测试

(4)程序调试过程修改:在不同进制数的互转换过程中小数部分尤为不好处理,例如:三进制数2.1整数部分2无需转换,小数0.1转换结果为1/3纯循环小数。七进制数6.3、3.1、2.135,这些小数部分根本无法转换成十进制整数,这里不一一赘述,故设定转换结果保留五位小数。

7 结果分析

在设计的过程中遇到了许多问题,并最终得到解决,其分析过程如下:(1)考虑到本程序转换的数字对象并不是天文数字,栈操作定义中,初始化栈空间为20(存储20位数字),但也可能出现空间不足。解决的办法是当空间不足时自动进行扩充。

(2)程序的健壮性问题。数据通过一定的形式读入地。当输入格式有误时就程序无法计算时,返回输入错误重新输入。

(3)程序的循环操作问题。当输入有误时必须把输入的错误字符读入,再进行下次操作。

时间复杂度T(n)=O(n);

空间复杂度S(n)=O(n);

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

若十进制数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)

各种进制之间转换方法

各进制转换方法(转载) 一、计算机中数的表示: 首先,要搞清楚下面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 三、各种进制数的运算

各种进制之间转换方法

各进制转换方法(转载)一、计算机中数的表示: 首先,要搞清楚下面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 三、各种进制数的运算 方法:逢满进具体计算与平时十进制的计算类似,以十六进制为例: 加法:

计算机考试中各种进制转换的计算方法

二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:0110 0100,转换为10进制为: 下面是竖式: 0110 0100 换算成十进制 第0位 0 * 20 = 0 第1位 0 * 21 = 0 第2位 1 * 22 = 4 第3位 0 * 23 = 0 第4位 0 * 24 = 0 第5位 1 * 25 = 32 第6位 1 * 26 = 64 第7位 0 * 27 = 0 + --------------------------- 100 用横式计算为: 0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 0乘以多少都是0,所以我们也可以直接跳过值为0的位: 1 * 2 2 + 1 * 2 3 + 1 * 25 + 1 * 26 = 100 2.2 八进制数转换为十进制数 八进制就是逢8进1。 八进制数采用 0~7这八数来表达一个数。

八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方…… 所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示: 1507换算成十进制。 第0位 7 * 80 = 7 第1位 0 * 81 = 0 第2位 5 * 82 = 320 第3位 1 * 83 = 512 + -------------------------- 839 同样,我们也可以用横式直接计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 结果是,八进制数 1507 转换成十进制数为 839 2AF5换算成10进制: 第0位: 5 * 160 = 5 第1位: F * 161 = 240 第2位: A * 162 = 2560 第3位: 2 * 163 = 8192 +

各种进制之间的转换方法

各种进制之间的转换方法 ⑴二进制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、基数 数制是以表示数值所用符号的个数来命名的,表明计数制允许选用的基本数码的个数称为基数,用R表示。例如:二进制数,每个数位上允许选用0和1,它的基数R=2;十六进制数,每个数位上允许选用1,2,3,…,9,A,…,F共16个不同数码,它的基数R=16。 2、权 在进位计数制中,一个数码处在数的不同位置时,它所代表的数值是不同的。每一个数位赋予的数值称为位权,简称权。 权的大小是以基数R为底,数位的序号i为指数的整数次幂,用i表示数位的序号,用Ri表示数位的权。例如,543.21各数位的权分别为102、101、100、10-1和10-2。 3、进位计数制的按权展开式 在进位计数制中,每个数位的数值等于该位数码与该位的权之乘积,用Ki表示第i位的系数,则该位的数值为KiRi。任意进位制的数都可以写成按权展开的多项式和的形式。 二、计算机中的常用的几种进制。 在计算机中常用的几种进制是:二进制、八进制、十进制和十六进制。二进制数的区分符用字母B表示,八进制数的区分符用字母O表示,十进制数的区分符用字母D表示或不用区分符,十六进制数的区分符用字母H表示。 1、二进制(Binary System)

二进制数中,是按“逢二进一”的原则进行计数的。其使用的数码为0,1,二进制数的基为“2”,权是以2为底的幂。 2、八进制(Octave System) 八进制数中,是按“逢八进一”的原则进行计数的。其使用的数码为0,1,2,3,4,5,6,7,八进制数的基为“8”,权是以8为底的幂。 3、十进制(Decimal System) 十进制数中,是按“逢十进一”的原则进行计数的。其使用的数码为1,2,3,4,5,6,7,8,9,0,十进制数的基为“10”,权是以10为底的幂。 4、十六进制(Hexadecimal System) 十六进制数中,是按“逢十六进一”的原则进行计数的。其使用的数码为0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,十进制数的基为“16”,权是以16 为底的幂。 三、进位计数制相互转换 1、二进制转换成八进制 转换原则:以小数点为中心,整数部分从右向左,小数部分从左向右,“三位一体,不足补零。” 举例:(.1111)B =(010 101 100)O=()O 2、二进制转换成十进制 转换原则:让二进制各位上的系数乘以对应的权,然后求其和。 举例:()B =(1×22+1×21+1×20+1×2-1+1×2-2)D=()D 3、二进制转换成十六进制 转换原则:以小数点为中心,整数部分从右向左,小数部分从左向右,“四位一体,不足补零”。 举例:()B =(0001 0101 )H = (1 5 )H 4、八进制转换成二进制 转换原则:将八进制上每一位数码“一分为三”,即可得二进制。 举例:()O =(111 110 011)B

计算机进制转换公式

计算机进制转换公式 (1 )将二进制数转换成对应的十进制数 将二进制数转换成对应的十进制数的方法是“按权展开求和”:利用二进制数按权展开的多项式之和的表达式,取基数为 2 ,逐项相加,其和就是对应的十进制数。 例 1 :将二进制数1011.1 转换成对应的十进制 解:1011.1B=1×2 3+0×2 2+1×2 1+1×2 0+1×2 -1=8+0+2+1+0.5=11.5D (2 )将十进制数转换成对应的二进制数 将十进制数转换为对应的二进制数的方法是: 对于整数部分,用被除数反复除以2 ,除第一次外,每次除以2 均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。对于小数部分,采用连续乘以基数 2 ,并依次取出的整数部分,直至结果的小数部分为0 为止。故该法称“ 乘基取整法” 。 例:将十进制117.625D 转换成二进制数 解:整数部分:“除以2 取余,逆序输出” 小数部分: “乘以2 取整,顺序输出” 所以117.625D =1110101.101B 特别提示:将十进制数转换成其他进制数方法与次上述方法类似。 (3 )将二进制数转换为对应的八进制数 由于1 位八进制数对应3 位二进制数,所以二进制数转换成八进制数时,只要以小数点为界,整数部分向左,小数部分向右每 3 位分成一组,各组用对应的 1 位八进制数字表示,即可得到对应的八进制数值。最左最右端分组不足 3 位时,可用0 补足。 例:将1101101.10101B 转换成对应的八进制数。 解:所以,1101101.10101B =155.52Q 。 同理,用相反的方法可以将八进制数转换成对应的二进制数。 (4 )将二进制数转为对应的十六进制数 由于1 位十六进制数对应4 位二进制数,所以二进制数转换为十六进制时,只要以小数点为界,整数部分向左,小数部分向右每 4 位分成一组,各组用对应的 1 位十六进制数字表示,即可得到对应的十六进制数值。两端的分组不足 4 位时,用0 补足。 例:将1101101.10101B 转换成对应的十六进制数 解:所以1101101.10101B =6D.8AH 。 同理,用相反的方法可以将十六进制数转换成对应的二进制数。 例:将十六进制数5DF.9 转换成二进制: 例:将二进制数1100001.111 转换成十六进制: 至于其他的转换方法,如八进制到十进制,十六进制到十进制之间的转换,同样可用按权展开的多项式之和及整数部分用“ 除基取整数” 来实现的。只不过此时基数分别为8 和16 。当然,更简单实用的方法是借用二进制数做桥梁,用“ 八——二——十” 或“ 十六——二——八” 的转换方法来实现。

计算机进制转换

二进制、八进制、十进制、十六进制之间转换二进制、八进制、十进制、十六进制之间转换 一、十进制与二进制之间的转换 (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)数码:用不同的数字符号来表示一种数制的数值,这些数字符号称为”数码”。 (2)基:数制所使用的数码个数称为”基”。 (3)权:某数制每一位所具有的值称为”权”。 二:进制转换的理论 1、二进制数、十六进制数转换为十进制数:用按权展开法 把一个任意R进制数a n a n-1 ...a1a0 . a-1a-2...a-m 转换成十进制数,其十进制数值为每一位数字与其位权之积的和。 a n×R n+ a n-1×R n-1+…+ a1×R 1+ a0×R0+ a-1×R-1+ a-2×R-2 + …+ a-m×R-m 2、十进制转化成R进制 十进制数轮换成R进制数要分两个部分: 整数部分:除R取余数,直到商为0,得到的余数即为二进数各位的数码,余数从右到左排列(反序排列)。 小数部分:乘R取整数,得到的整数即为二进数各位的数码,整数从左到右排列(顺序排列)。 3、十六进制转化成二进制 每一位十六进制数对应二进制的四位,逐位展开。 4、二进制转化成十六进制 将二进制数从小数点开始分别向左(对二进制整数)或向右(对二进制小数)每四位组成一组,不足四位补零。 三、具体实现 1、二进制转换成十进制 任何一个二进制数的值都用它的按位权展开式表示。 例如:将二进制数(10101.11)2转换成十进制数。 (10101.11)2=1*24+0*23+1*22+0*21+1*20+1*2-1+1*2-2 =24+22+20+2-1+2-2=(21.75)10 2、十进制整理转换成二进制 将十进制整数转换成二进制整数采用“除2取倒余法”。 即将十进制整数除以2,得到一个商和一个余数;再将商除以2,又得到一个商和一个余数; 以此类推,直到商等于零为止。 每次得到的余数的倒排列,就是对应二进制数的各位数。 于是,结果是余数的倒排列,即为: (37)10=(a5a4a3a2a1a0)2=(100101)2 3、十进制小数转换成二进制小数 十进制小数转换成二进制小数是用“乘2取整法”。即用2逐次去乘十进制小数, 将每次得到的积的整数部分按各自出现的先后顺序依次排列,就得到相对应的二进制小数。 将十进制小数0.375转换成二进制小数,其过程如下:

计算机各种进制转换

6.1 为什么需要八进制和十六进制? 编程中,我们常用的还是10进制……必竟C/C++是高级语言。 比如: int a = 100,b = 99。 不过,因为数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。 但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是: 0000 0000 0000 0000 0110 0100 面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。 用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢? 2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。 6.2 二、八、十六进制数转换到十进制数 6.2.1 二进制数转换为十进制数 二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:0110 0100,转换为10进制为: 下面是竖式: 0110 0100 换算成十进制 第0位 0 * 20 = 0 第1位 0 * 21 = 0 第2位 1 * 22 = 4 第3位 0 * 23 = 0

第4位 0 * 24 = 0 第5位 1 * 25 = 32 第6位 1 * 26 = 64 第7位 0 * 27 = 0 + --------------------------- 100 用横式计算为: 0 * 20 + 0 * 21 + 1 * 22 + 1 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100 0乘以多少都是0,所以我们也可以直接跳过值为0的位: 1 * 2 2 + 1 * 2 3 + 1 * 25 + 1 * 26 = 100 6.2.2 八进制数转换为十进制数 八进制就是逢8进1。 八进制数采用 0~7这八数来表达一个数。 八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方…… 所以,设有一个八进制数:1507,转换为十进制为: 用竖式表示: 1507换算成十进制。 第0位 7 * 80 = 7 第1位 0 * 81 = 0 第2位 5 * 82 = 320 第3位 1 * 83 = 512 + -------------------------- 839 同样,我们也可以用横式直接计算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839 结果是,八进制数 1507 转换成十进制数为 839

计算机进制之间的转换

计算机中常用的数制 一、几种常用的进位计数制 1.十进制 (10个基本数码:0、1、2、3、4、5、6、7、8、9) 2.二进制(2个基本数码:0、1) 3.八进制(8个基本数码:0、1、2、3、4、5、6、7) 4.十六进制(16个基本数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F)二、计算机常用的各种进制数的特点 三、不同进位计数制间数据的转化 1.二进制数转换成十进制数 方法:采用每位二进制数乘以相应位的基数幂再相加。 注意:整数部分权由0,1,2依次展开,小数部分权由-1,-2依次展开。遇0时可以省略,因为0乘以任何数都为0。 例题:把二进制111010和101.101转换成十进制数。 (111010)2=1ⅹ25+1ⅹ24+1ⅹ23+1ⅹ21=(58)10 (101.101)2=1ⅹ22+1ⅹ20+1ⅹ2-1+1ⅹ2-3=(5.625)10

2.十进制数转换成二进制数 方法:整数部分“除2取余法”,小数部分“乘2取整法” 注意:整数部分在取余数时,从后向前取,小数部分从前向后取。例题:把十进制205.8125转换成二进制数。 整数部分205转换过程如下:小数部分0.8125转换过程如下: (205.8125)10=(11001101.1101)2

3.十进制数转换成八进制数 方法:整数部分“除8取余法”,小数部分“乘8取整法” 注意:整数部分在取余数时,从后向前取,小数部分从前向后取。例题:把十进制1645.6875转换成八进制数。 (1645.6875)10=(3155.54)8

4.十进制数转换成十六进制数 方法:整数部分“除16取余法”,小数部分“乘16取整法” 注意:整数部分在取余数时,从后向前取,小数部分从前向后取。例题:把十进制205.21875转换成十六进制数。 (205.21875)10=(CD.38)16

各种进制之间的转换(可编辑修改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 进制表达出来的一个数值,转换成八进制数十多少?

各种进制之间的转换方法.docx

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

进制转换方法总结

信息的编码 再问学生计算机存储信息是不是都采用了二进制数二进制也存在缺点,二进制都用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. 数值在计算机中的表现形式 计算机中采用二进制时由计算机所用的逻辑器件所决定的。这种逻辑器件是具有两种状态的电路(触发器),其好处是:运算简单、实现方便、成本低。 计算机采用二进制数进行运算,并可通过进制的转换将二进制转换成人们熟悉的十进制,并在常用的转换中为了计算方便,还会用到八进制和十六进制的计数方法。 ◎十进制数 十进制数具有10个数字符号:0、1、2、3、4、5、6、7、8、9、10分别表示数值0-10。 ◎二进制数 进制数只有0,1表示,根据位权表示法,可以将二进制的位权展开计算出相对应的十进制数: 例: (1011)2=1*23+0*22+1*21+1*20=8+0+2+1=(11)10 ◎八进制数 八进制数具有8个数字符号:0、1、2、3、4、5、6、7、8分别表示数值0-8。计数时是按“逢8进一”原则的。这样,任何一个八进制数的值都可以用它的按位权展开式来计算出对应的十进制数。 例:(650)8=6*82+5*81+0*80=384+40+0=(424)10 ◎十六进制数 十六进制数具有16个数字符号:0、1、2、3、4、5、6、7、8、

9、A、B、C、D、E、F分别表示十六进制数值0-15。计数时是按“逢16进一”原则的。这样,任何一个十六进制数的值都可以用它的按位权展开式来计算出对应的十进制数。 例:(3AB.12)16=3*162+10*161+11*160+1*16-1+2*16-2=(939.0664)10 ◎十进制化二进制 ⑴ 十进制整数:采用除 2 取余法 ⑵ 十进制小数:采用乘 2 取整法 ⑶ 带小数整数:以上两方法的结合

python各进制之间转换

python各进制之间转换 # global definition # base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F] base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)] # 二进制to 十进制: int(str,n=10) def bin2dec(string_num): return str(int(string_num, 2)) # 十六进制to 十进制 def hex2dec(string_num): return str(int(string_num.upper(), 16)) # 十进制to 二进制: bin() def dec2bin(string_num): num = int(string_num) mid = [] while True: if num == 0: break num,rem = divmod(num, 2) mid.append(base[rem]) return ''.join([str(x) for x in mid[::-1]]) # 十进制to 八进制: oct()

# 十进制to 十六进制: hex() def dec2hex(string_num): num = int(string_num) mid = [] while True: if num == 0: break num,rem = divmod(num, 16) mid.append(base[rem]) return ''.join([str(x) for x in mid[::-1]]) # 十六进制to 二进制: bin(int(str,16)) def hex2bin(string_num): return dec2bin(hex2dec(string_num.upper())) # 二进制to 十六进制: hex(int(str,2)) def bin2hex(string_num): return dec2hex(bin2dec(string_num))

进制数之间的转换方法

一般来说,对于任意大于1的整数n,存在n进制,其特点是基数为n,逢n进一。其中最常用的是二进制、八进制和十六进制。 任意进制的数字对应的十进制值为: Kn×Bn + Kn-1×Bn-1 + …… + K1×B1 + K0×B0 + K-1×B-1 + K-2×B-2 …… + K-m×B-m 上式中,B称为数字系统的基数,Bn至B0称为数字Kn至K0的权值。 1.基本知识 十进制 基数为10,逢10进1。在十进制中,一共使用10个不同的数字符号,这些符号处于不同位置时,其权值各不相同。 二进制 基数为2,逢2进1。在二进制中,使用0和1两种符号。 八进制 基数为8,逢8进1。八进制使用8种不同的符号,它们与二进制的转换关系为:0:000 1:001 2:010 3:011 4:100 5:101 6:110 7:111 十六进制 基数为16,逢16进1。十六进制使用16种不同的符号,它们与二进制的转换关系为: 0:0000 1:0001 2:0010 3:0011 4:0100 5:0101 6:0110 7:0111 8:1000 9:1001 A:1010 B:1011 C:1100 D:1101 E:1110 F:1111 二进制数的运算 算术运算:加法 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10(向高位进1) 算术运算:减法 0 ? 0 = 0 0 ? 1 = 1(向高位借1)1 ? 0 = 1 1 - 1 = 0 逻辑运算:或(∨) 0 ∨0 = 0 0 ∨1 = 1 1 ∨0 = 1 1 ∨1 = 1 逻辑运算:与(∧) 0 ∧0 = 0 0 ∧1 = 0 1 ∧0 = 0 1 ∧1 = 1 逻辑运算:取反 0取反为1 1取反为0 注意:算术运算会发生进位、借位,逻辑运算则按位独立进行,不发生位与位之间的关系,其中,0表示逻辑假,1表示逻辑真。

十进制转任意进制的通用方法

十进制转任意进制的通用方法是:除x取余倒排法(x代表进制数)。 如:将十进制数76转换成任意进制 1.转成二进制 76 / 2 0 = 38 / 2 0 = 19 / 2 (1) = 9 / 2 (1) = 4 / 2 0 = 2 / 2 0 = 1 / 2 (1) 76(10) = 1001100(2) 2.转成八进制 76 / 8 (4) = 9 / 8 (1) = 1 / 8 (1) 76(10) = 114(8) 3.转成十六进制 76 / 16 (12) = 4 / 16 (4) 76(10)=4C(16) B :二进制数。 Q :八进制数。 D :十进制数。 H :十六进制数。 对于十进制数通常不加后缀,也即十进制数后的字母 D 可省略。 ( 1 )将二进制数转换成对应的十进制数 将二进制数转换成对应的十进制数的方法是“按权展开求和”: 利用二进制数按权展开的多项式之和的表达式,取基数为 2 ,逐项相加,其和就是对应的十进制数。 例 1 :将二进制数 1011.1 转换成对应的十进制 解:1011.1B=1×2的3次方+0×2的2次方+1×2的1次方+1×2的0次方+1×2的-1次方 =8+0+2+1+0.5 =11.5D (2 )将二进制数转换为对应的八进制数 由于 1 位八进制数对应 3 位二进制数,所以二进制数转换成八进制数时,只要以小数点为界,整数部分向左,小数部分向右每 3 位分成一组,各组用对

应的 1 位八进制数字表示,即可得到对应的八进制数值。最左最右端分组不足 3 位时,可用 0 补足。 例:将 1101101.10101B 转换成对应的八进制数。 解: 所以, 1101101.10101B = 155.52Q 。 同理,用相反的方法可以将八进制数转换成对应的二进制数。 (3 )将二进制数转为对应的十六进制数 由于 1 位十六进制数对应 4 位二进制数,所以二进制数转换为十六进制时,只要以小数点为界,整数部分向左,小数部分向右每 4 位分成一组,各组用对应的 1 位十六进制数字表示,即可得到对应的十六进制数值。两端的分组不足 4 位时,用 0 补足。 例:将 1101101.10101B 转换成对应的十六进制数 解: 所以 1101101.10101B = 6D.8AH 。 同理,用相反的方法可以将十六进制数转换成对应的二进制数。 计算机中常用的数的进制主要有:二进制、八进制、十六进制,学习计算机要对其有所了解。 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

相关文档
最新文档