当前位置:文档之家› 数制转换问题(完整)

数制转换问题(完整)

数制转换问题(完整)
数制转换问题(完整)

数据结构课程设计

题目名称:数制转换问题

课程名称:数据结构

学生姓名:

学号:

学院名称:

指导教师:

目录

一.需求分析………………………………………………………二.概要设计………………………………………………………三.详细设计………………………………………………………四.调试测试………………………………………………………五.总结……………………………………………………………

一.需求分析

应用环境设定:生活中我们需要将M进制的数转换为我们所需要

的进制,从键盘任意输入一个M进制的数,对其

进行转换成其他三种进制的数,然后再从电脑中

显示出来,最终得到我们的结果。

用户界面:命令行界面,根据自己的要求,对界面的提示进行操作,正确输入我们需要的数据。

输入方式:首先输入将转换的进制数,回车确认;然后输入确定的数据,回车确认;接着选择要转换为的进制数,回车确

认。

输出方式:界面直接输出,启动程序后,按照界面提示,输入数据,直接回车确认,显示屏即输出我们的数据结果。

数据储存方式:全部在内存存放,不使用硬盘上的文件或其他数据

源,程序执行过程中和结束后不保存数据。

程序功能:1.根据界面提示输入M进制数据。

2.对任意M进制数据实行非M进制的转换。

二.概要设计

在此说明数据结构设计和关键的算法设计思想

1.用数组实现该问题

D2M()函数和M2D()函数是实现该问题的主要函数。D2M()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,接着通过递归调用D2M()函数依次将得到的整数部分依次先取余后取整,并将所得的余

数依次存入一个数组中,然后逆向取出数组中的元素,即得到转换后的结果。而M2D()函数则是实现其他进制M转换为十进制,并将其转换为非M进制的数。M进制转十进制则是从该M进制数的最后一位开始算,依次列为第0、1、2…n位并分别乘以M的0、1、2…n次方,将得到的次方相加便得到对应的十进制数,再调用D2M()函数将其转换为非M进制的数。

⑴i,j,y,n,s,m,r,reminder,x是定义的全局变量,初始值都为0;

⑵D2M(int g,int h)是实现十进制数转换为M进制数的函数;

⑶M2D(int e)是实现M(仅指二进制数和八进制数)进制数转

换为十进制数的函数,并在其中调用D2M(int g,int h)

实现向非M进制数的转换;

⑷H2D(int f)是实现十六进制数转换为十进制数的函数,并

在其中调用D2M(int g,int h)实现向非十六进制数的转

换;

⑸void main()是主函数,功能是给出测试的数据,并在特

定条件下调用D2M()函数和M2D()函数。

使用简单一维数组int a[N],int b[N],int c[N]。

2.用栈实现该问题

同样是利用D2M()和M2D()两个函数实现。两个函数的思想同

利用数组实现时相同。只是栈具有后进先出的性质,故其用Pop()取数较数组的逆向取数方便些。

⑴SqStack定义栈,说明base为栈底指针,top为栈顶指针,

stacksize为栈容量;

⑵int InitStack(SqStack &S)到int DestroyStack(SqStack &S)

六大模块分别表示构造一个空栈、用e表示栈元素、插

入元素、删除元素、判断栈是否为空以及摧毁栈;

⑶SqStack S是指定义栈S;

⑷D2M(int a,int b)的功能是将十进制数转换成M进制的函数;

⑸M2D()的功能是M进制转换为十进制的函数;

⑹void main()是主函数。其功能是输入需要测试的数据以及需

要转换的进制,并在特定情形下调用D2M()函数和M2D()

函数,而且实现M进制数向任意非M进制数的转换。

数据类型定义如下:

typedef struct{

int *base; 栈底

int *top; 栈顶

int stacksize;栈容量

}SqStack;

int InitStack(SqStack &S)构造一个个空栈

int GetTop(SqStack S, int &e) 若栈不为空,则用e返回S的栈顶元素,并返回0,否则返回1

int Push(SqStack &S , int e) 插入元素e为新的栈顶元素

int Pop(SqStack &S, int &e) 若栈不空,则删除S的栈顶元素,用e返回其值,并返回0,否则返回1。

1.程序流程图

2.程序源代码

A.用数组实现(文件名shuzu.cpp)

#include

#include

#define N 1000

int i,j,y,n,s;

int m,r,reminder;

int x; //全局变量默认初始化为0,不必再赋0了

D2M(int g,int h) //十进制数转换为其他进制数

{

int c[N];

i=0;

reminder=g%h;

g=g/h;

if(reminder>9)

{

c[i]=reminder+55;

i++;

}

else

{

c[i]=reminder;

i++;

}

if(g>0)

D2M(g,h);

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

if(c[j]>=65)

printf("%c",c[j]);

else

printf("%d",c[j]);

return 0;

}

M2D(int e) //二进制和八进制数转换为十进制数,并这转换为其他进制数

{

int a[N];

printf("请输入%d进制位数:",m);

scanf("%d",&n);

printf("请输入%d进制的每位并使每位用空格隔开:",m);

for(i=0;i

scanf("%d",&a[i]);

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

{

y+=(int)pow(e,j)*a[i]; //强制类型转换,以免造成数据丢失

j++;

}

printf("需要转换的进制M:");

scanf("%d",&s);

printf("请输出转换成%d进制的结果:",s);

D2M(y,s);

return 0;

}

H2D(int f) //十六进制数转换为十进制数,并转换为其他进制数

{

int b[N];

printf("请输入%d进制位数:",m);

scanf("%d",&n);

printf("请输入%d进制的每位并使每位用空格隔开:",m);

for(i=0;i

scanf("%x",&b[i]);

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

{

y+=(int)pow(f,j)*b[i]; //强制类型转换,以免造成数据丢失

j++;

}

printf("需要转换的进制M:");

scanf("%d",&s);

printf("请输出转换成%d进制的结果:",s);

D2M(y,s);

return 0;

}

void main()

{

printf("请给定一个需转换的进制M(2or8or10or16):");

scanf("%d",&m);

if(m==2||m==8) //二进制和八进制转换成十进制M2D(m);

else if(m==16) //十六进制转换成十进制

H2D(m);

else if(m==10) //十进制转换成其它进制

{

printf("请输入一个%d进制数:",m);

scanf("%d",&x);

printf("请输入需要转换成的进制M(2or8or16):");

scanf("%d",&r);

printf("请输出转换成%d进制的结果:",r);

D2M(x,r);

}

printf("\n");

}

B.用栈实现(文件名zhan.cpp)

#include

#include

#include

#include

#define STACK_INIT_SIZE 100 //存储空间初始分配量

#define STACKINCREMENT 10 //存储空间分配增量

int e,m,x,s,t; //x为要转换的十进制数,e 为临时用的的int 型变量

int r,y,i,n;

typedef struct{

int *base; //栈底

int *top; //栈顶

int stacksize; //栈容量

}SqStack;

int InitStack(SqStack &S){ //构造一个空栈

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

if(!S.base) exit(0); //存储空间失败

S.top=S.base;

S.stacksize=STACK_INIT_SIZE;

return 0;

}

int GetTop(SqStack S, int &e){ //若栈不为空,则用e返回S的栈顶元素,并返回0,否则返回1

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

e=*(S.top-1);

return 0;

}

int Push(SqStack &S , int e){ //插入元素e为新的栈顶元素if(S.top-S.base>=S.stacksize){ //栈满,追加存储空间

S.base=(int *)realloc(S.base,

(S.stacksize+STACKINCREMENT)*sizeof(int));

if(!S.base) return 1 ; //存储分配失败

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

S.stacksize+=STACKINCREMENT;

}

*S.top++=e;

return 0;

}

int Pop(SqStack &S, int &e){ //若栈不空,则删除S的栈顶元素,用e返回其值,并返回0,否则返回1

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

e=*--S.top;

return 0;

}

int StackEmpty(SqStack S){ //若栈空,则返回1,否则返回0 if(S.top==S.base)

return 1;

return 0 ;

}

int DestroyStack(SqStack &S){ //销毁栈S,栈S不再存在free(S.base);

S.top=NULL; //防止程序后面不小心使用了它

S.base=S.top;

return 0 ;

}

SqStack S; //定义栈S

D2M(int a,int b) //十进制转换成其他进制的函数D2M()

{

while(a)

{

r=a%b;

if(r>9)

r=r+55;

Push(S,r); //压入栈

a/=b; //转换成M进制

printf("该数转换成%d进制的结果:",b);

while(!StackEmpty(S))

{

Pop(S,e); //弹出栈

if(e>=65)

printf("%c",e);

else

printf("%d",e);

}

return 0;

}

M2D() //其他进制转换为十进制的函数M2D() {

char c[1000];

printf("请输入需要转换的数的位数:");

scanf("%d",&n);

printf("请输入需要转换的数的每位并用空格隔开:");

for(i=0;i

{

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

Push(S,c[i]);

i=0;

while(!StackEmpty(S))

{

Pop(S,e);

y+=(int)pow(m,i)*e;

i++;

}

}

void main()

{

InitStack(S); //构造一个空栈

printf("请输入需要转换的进制M(2or8or10or16):");

scanf("%d",&m);

if(m==10) //十进制转换成其他进制{

printf("请给定一个需要转换的10进制数:");

scanf("%d",&x);

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

scanf("%d",&t);

D2M(x,t);

}

if(m==2||m==8||m==16) //其他进制转换成十进制,且其他任意进制的相互转换

{

M2D();

printf("给定要转换成的进制M:");

scanf("%d",&s);

D2M(y,s);

}

printf("\n");

DestroyStack(S); //销毁栈S,栈S不再存在

}

四.调试测试

1.十进制数365转换二进制数测试结果如下:(图1)

图1

2.十六进制数1A2B3C转换十进制数测试结果如下:(图2)

图2

3.二进制数11001100转换八进制数测试结果如下:(图3)

图3

4.八进制数1234转换为十六进制数测试结果如下:(图4)

图4 五.总结

此次课程设计与以往不同:第一,时间是比较紧的,从题目分配到完成设计不足十天的时间,而且又是即将期末考试的这段时间;第二,人数和以往也不同,以前都是几个同学一起完成设计,而这次却是每个人单独完成自己的题目,所以人手也是比较紧的;第三,以前的课程设计是最后完成提交就行了,而这次我们必须时刻都提交自己课程设计的进程,中途随时交给指导老师批阅,避免同学最后时间才去完成作业的思想。

这次课程设计过程中遇见的问题就是2、8、10、16进制之间的转换。任意进制之间的转换在栈和数组的处理时遇到大于10的数的处理难题,同时,在进行转换的时候,对于数字的长度处理上,也是遇到了难题的。

本次课程设计运用了网络知识,以及向别人请教,查阅资料等解决了算法的难题。从这里我发现,任何一个难题,即使我们碰到一个很大的程序,不知道该如何下手时,只有找多方面的资料,加强思考,这样就能得到意想不到的惊喜。本次做这个数制转换的题目。总

体来说不是很难,只需要在细节方面熟练的运用栈、数组。这次课程设计锻炼了我的思维,以及强化了课堂所学的知识,感觉收获很多。相信这对我人生烙下一个深深的印记。

各种进制之间转换方法

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

C语言中的强制类型转换运算

C语言中的强制类型转换运算 C语言中的强制类型转换是通过类型转换运算来实现的。 其一般形式为: (类型说明符)(表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。 例如: (float)a 把a转换为实型 (int)(x+y)把x+y的结果转换为整形 在使用强制转换时应注意以下问题: 1)类型说明符和表达式都必须加括号(单个变量可以不加括号),如果把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。 2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性的转换,而不改变数据说明时对该变量定义的类型。 【例1】 #include int main (void) { float f = 3.14; printf("(int)f = %d,f = %.2f\n",(int)f,f); return 0; } 本例表明,f虽强制转为int型,但只在运算中起作用,是临时的,而f本身的类型并不改变。因此,(int)f的值为5(删去了小数)而f的值仍为5.75. 1、求余运算符(模运算符)“%”:双目运算,具有左结合性。要求参与运算的量均为整型。求余运算的结果等于两数相除后的余数。 #include int main (void) { printf(" %d\n",110%3);

return 0; } 本例输出110除以3所得的余数2。 2、算数表达式和运算符的优先级和结合性 表达式是由常量、变量、函数和运算符组合起来的式子。一个表达式有一个值及其类型,他们等于计算表达式所得结果的值和类型。表达式求值按运算符的优先级和结合性规定的顺序进行。单个的常量、变量、函数可以看作是表达式的特例。 算数表达式是由算术运算符和括号连接起来的式子。 算数表达式:用算数运算符和括号将运算对象(也称操作数)连接起来的、符合C语法规则的式子。 以下是算数表达式的例子: a+b; (a*2)/c; (x+r)*8-(a+b)/7; ++I; Sin(x)+sin(y); (++i)-(j++)+(k--); 运算符的优先级:C语言中,运算符的运算优先级共分为15级。1级最高,15级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。 运算符的结合性:C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z,则先执行x-y运算,然后再执行+z运算。这是左结合性。右结合性最典型的是赋值运算符。如x=y=z. 3、强制类型转换运算符 其一般形式为: (类型说明符)(表达式)

各种进制之间转换方法

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

三种不同方法解决数制转换问题

/////////////////方法一 #include #define S 10 void zh(int N,int r) { int L[S],top; int x; top=-1; while(N) { L[++top]=N%r; N=N/r; while(top!=-1) { x=L[top--]; printf("%d",x); } } printf("\n"); } main() { int w,z; scanf("%d%d",&w,&z); zh(w,z); } ///////////////////////////方法二 #include #include #define maxsize 50 void conversion(int n,int r) { int ss[maxsize]={0}; int i=0; int j; while(n) { ss[i]=(n%r); i++; n=n/r; } for(j=0;j

}//数制转换 void main() { int n=37; int r=4; printf("十进制数%2d转换为%d进制数。\n",n,r); conversion(n,r); } /////////////////方法三 #include #include #define maxsize 5 typedef struct { int data[maxsize]; int top; }seqstack; void init_seqstack(seqstack *s) { s->top=-1; }//栈的初始化 int empty_seqstack(seqstack *s) { if(s->top==-1) return 1; else return 0; }//空栈的判断 int push_seqstack(seqstack *s,int x) { if(s->top==maxsize-1) return 0; else { (s)->data[++(s)->top]=x; return (1); } }//进栈 int pop_seqstack(seqstack *s,int *x)

数制转换练习-答案

数制练习 填空 1. 两个8位二进制数和01001011进行逻辑加的结果为。 2. 十六进制数对应的十进制数字是。 3. 已知一个带符号整数的补码由两个1和六个0组成,则该补码能够表示的最小整数是 -127 。 4. 二进制数和进行逻辑“与”运算,结果再与进行逻辑“或”运算,最终结果的十六进制形式为()。 5.Pentium处理器中的一个16位带符号整数,如果它的十六进制表示为FEDCH,那么它的十进制值为( -292)。 5. 对两个逻辑值1施行逻辑加操作的结果是 1 。 6. .若A=1100,B=0010,A与B运算的结果是1110,则其运算可以是算术加,也可以是逻 辑加 判断 1.每个十进制整数都可以精确的转换为二进制整数形式。N 2. 一个整数的补码就是其原码除符号位外取反加1。Y 单选 1. 下面关于计算机中定点数与浮点数的一些叙述 , 正确的是____B______ A. 定点数只能表示纯小数 B. 浮点数尾数越长 , 数的精度就越高 C. 定点数的数值范围一定比浮点数的数值范围大 D. 定点数就是用十进制表示的数 2. 下列有关 " 权值 " 表述正确的是____B______ A. 权值是指某一数字符号在数的不同位置所表示的值的大小 B. 二进制的权值是 " 二 ", 十进制的权值是 " 十 " C. 权值就是一个数的数值 D. 只有正数才有权值 3. 下列有关 " 基数 " 表述正确的是____B______ A. 基数是指某一数字符号在数的不同位置所表示的值的大小 B. 二进制的基数是 " 二”,十进制的基数是 " 十 " C. 基数就是一个数的数值 D. 只有正数才有基数 4. 十进制数 "13", 用三进制表示为____C______ B.110 5. 下列各数都是五进制数 , 其中____B______对应的十进制数是偶数。 B. 101 6. 一个某进制的数"lAl”,其对应十进制数的值为 300, 则该数为 C A. 十一进制 B.十二进制 C. 十三进制 D. 十四进制

进制之间的转换

--进制之间的转换-- 介绍:进制也就是进位计数制,是人为定义的带进位的计数方法(有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的“正”字计数法,以及类似的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转换为八进制解析:

数制及数制转换案例分析

数制及数制转换案例分析 1.几种常用的计数体制 日常生活中最常使用的是十进制数(如563),但在数字系统中特别是计算机中,多采用二进制、十六进制,有时也采用八进制的计数方式。无论何种记数体制任何一个数都是由整数和小数两部分组成的。 1) 十进制数(Decimal) (1) 当所表示的数据是十进制时,可以无须加标注意,即十进制数576可以表示为: (576)10=576 (2) 特点如下。 ①由10个不同的数码0、1、2、…、9和一个小数点组成。 ②采用“逢十进一”的运算规则。 例如(213.71)10=2×102+1×101+3×100+7×10-1+1×10-2 102、101、100、10-1、10-2 称为权或位权,10为其计数基数。 在实际的数字电路中采用十进制十分不便,因为十进制有十个数码,要想严格的区分开必须有十个不同的电路状态与之相对应,这在技术上实现起来比较困难。因此在实际的数字电路中一般是不直接采用十进制的。 2) 二进制数(Binary) (1) 表示:(101.01)2 (2) 特点如下。 ①由两个不同的数码0、1 和一个小数点组成。 ②采用“逢二进一、借一当二”的运算规则。 3) 八进制(Octal) (1) 表示:(106.4)8 (2) 特点如下。 ①由8 个不同的数码0、1、2、3、4、5、6、7和一个小数点组成。 ②采用“逢八进一、借一当八”的运算规则。 4) 十六进制(Hexadecimal) (1) 表示:(2A5)6 (2) 特点如下。 ①由16 个不同的数码0、1、2、…、9、A、B、C、D、E、F 和一个小数点组成,其中A~F 分别代表十进制数10~15。 ②采用“逢十六进一、借一当十六”的运算规则。 2.数制转换 十进制数符合人们的计数习惯且表示数字的位数也较少;二进制适合计算机和数字系统

常用数制及其相互转换

一、常用数制及其相互转换 在我们的日常生活中计数采用了多种记数制,比如:十进制,六十进制(六十秒为一分,六十分为一小时,即基数为60,运算规则是逢六十进一),……。在计算机中常用到十进制数、二进制数、八进制数、十六进制数等,下面就这几种在计算机中常用的数制来介绍一下。1.十进制数 我们平时数数采用的是十进制数,这种数据是由十个不同的数字0、1、2、3、4、5、6、7、8、9任意组合构成,其特点是逢十进一。 任何一个十进制数均可拆分成由各位数字与其对应的权的乘积的总和。例如: ? ? ? 这里的10为基数,各位数对应的权是以10为基数的整数次幂。为了和其它的数制区别开来,我们在十进制数的外面加括号,且在其右下方加注10。 2.二进制数 在计算机中,由于其物理特性(只有两种状态:有电、无电)的原因,所以在计算机的物理设备中获取、存储、传递、加工信息时只能采用二进制数。二进制数是由两个数字0、1任意组合构成的,其特点是逢二进一。例如:1001,这里不读一千零一,而是读作:一零零一或幺零零幺。为了与其它的数制的数区别开来,我们在二进制数的外面加括号,且在其右下方加注2,或者在其后标B。 任何一个二进制数亦可拆分成由各位数字与其对应的权的乘积的总和。其整数部分的权由低向高依次是:1、2、4、8、16、32、64、128、……,其小数部分的权由高向低依次是:0.5、0.25、0.125、0.0625、……。 二进制数也有其运算规则: 加法:0+0=0????0+1=1???1+0=1????1+1=10 乘法:0×0=0????0×1=0????1×0=0????1×1=1 二进制数与十进制数如何转换: (1)二进制数—→十进制数 对于较小的二进制数: 对于较大的二进制数: 方法1:各位上的数乘权求和??例如: (101101)2=1×25+0×24+1×23+1×22+0×21+1×20=45 (1100.1101)2=1×23+1×22+0×21+0×20+1×2-1+1×2-2+0×2-3+1×2-4=12.8125 方法2:任何一个二进制数可转化成若干个100…0?的数相加的总和??例如: (101101)2=(100000)2+(1000)2+(100)2+(1)2 而这种100…00形式的二进制数与十进制数有如下关联:1后有n个0,则这个二进数所对应的十进制数为2n。 所以:(101101)2=(100000)2+(1000)2+(100)2+(1)2=25+23+22+20=45

C语言中不同的结构体类型的指针间的强制转换详解

C语言中不同类型的结构体的指针间可以强制转换,很自由,也很危险。只要理解了其内部机制,你会发现C是非常灵活的。 一. 结构体声明如何内存的分布, 结构体指针声明结构体的首地址, 结构体成员声明该成员在结构体中的偏移地址。 变量的值是以二进制形式存储在内存中的,每个内存字节对应一个内存地址,而内存存储的值本身是没有整型,指针,字符等的区别的,区别的存在是因为我们对它们有不同的解读,param的值就是一个32位值,并且存储在某个内存单元中,通过这个32位值就能找到param所指向的结构的起始地址,通过这个起始地址和各个结构所包含变量离起始地址的偏移对这些变量进行引用, param->bIsDisable只是这种引用更易读的写法,只要param是指向 PAINT_PARAM的指针,那么param的值就肯定存在,param存在,偏移量已知,那么param->bIsDisable就肯定存在,只是要记住,param->bIsDisable只是代表了对param一定偏移地址的值。 不是说某个地址有那个结构体你才能引用,即使没有,你也能引用,因为你已经告诉了编译器param变量就是指向一个PAINT_PARAM结构体的变量并且指明了param的值,机器码的眼中是没有数据结构一说的,它只是机械的按照 指令的要求从内存地址取值,那刚才的例子来说,peg->x,peg->y的引用无论 0x30000000是否存在一个eg结构体都是合法的,如果0x30000000开始的8 个字节存在eg结构体,那么引用的就是这个结构体的值,如果这个位置是未定义的值,那么引用的结果就是这8个字节中的未定义值,内存位置总是存在的,而对内存中值的引用就是从这些内存位置对应的内存单元取值。 举个例子: typedefstruct_eg { int x; int y; }eg;

数制间的转换

一到500二进制转换十进制对照表0,0 1,1 2,10 3,11 4,100 5,101 6,110 7,111 8,1000 9,1001 10,1010 11,1011 12,1100 13,1101 14,1110 15,1111 16,10000 17,10001 18,10010 19,10011 20,10100 21,10101 22,10110 23,10111 24,11000 25,11001 26,11010 27,11011 28,11100 29,11101 30,11110 31,11111 32,100000 33,100001 34,100010 35,100011 36,100100 37,100101 38,100110 39,100111 40,101000 41,101001 42,101010

44,101100 45,101101 46,101110 47,101111 48,110000 49,110001 50,110010 51,110011 52,110100 53,110101 54,110110 55,110111 56,111000 57,111001 58,111010 59,111011 60,111100 61,111101 62,111110 63,111111 64,1000000 65,1000001 66,1000010 67,1000011 68,1000100 69,1000101 70,1000110 71,1000111 72,1001000 73,1001001 74,1001010 75,1001011 76,1001100 77,1001101 78,1001110 79,1001111 80,1010000 81,1010001 82,1010010 83,1010011 84,1010100 85,1010101 86,1010110

《数制转换》教案

《数制转换及计算机中数的表示》教案 教学目标: 【知识目标】 1、理解进制的含义。 2、掌握二进制、十进制、八进制、十六进制数的表示方法。 3、掌握二进制、八进制、十六进制数转换为十进制的方法。 4、掌握十进制整数、小数转换为二进制数的方法。 5、掌握计算机中数的表示 【技能目标】 1、培养学生逻辑运算能力。 2、培养学生分析问题、解决问题的能力。 3、培养学生独立思考问题的能力。 4、培养学生自主使用网络软件的能力。 【情感目标】 通过练习数制转换,让学生体验成功,提高学生自信心。 教学重点: 1、各进制数的表示方法。 2、各进制数间相互转换的方法。 3、计算机中数的表示 教学难点: 十进制整数、小数转换为二进制数的方法;计算机中数的表示。 学法指导: 教师讲授、学生练习、教师总结、教师评价。 教学基础: 学生基础: 学生只学习了“计算机基础”一章的“计算机产生和发展”一节。 设备基础: 硬件:多媒体网络机房;教师机一台;学生机每人一台;大屏幕投影;教师机与学生机之间互相联网。 教学过程: 一、新课导入 我们日常生活中使用的数是十进制、十进制不是唯一的数的表示方法,表示数的数制还有哪些呢?这些数制与十进制间有什么关系呢?这节课我们就来学习数制。 二、新课讲解

第一部分数制及其转换 1、数制 数制的表示方法:为了区别不同进制数,一般把具体数用括号括起来,在括号的右下角标上相应表示数制的数字。 举例:(101) 2与(101) 10 基数:所使用的不同基本符号的个数。 权:是其基数的位序次幂。 ①十进制、二进制、十六进制、八进制的概念 (1)十进制(D):由0~9组成;权:10i;计数时按逢十进一的规则进行;用(345.59)10 或345.59D表示。 (2)二进制(B):由0、1组成;权:2i;计数时按逢二进一的规则进行;用(101.11)2 或101.11B表示。 (3)十六进制(H):由0~9、A~F组成;权:16i;计数时按逢十六进一的规 则进行;用(IA.C) 16 或IA.CH表示。 (4)八进制(Q):由0~7组成;权:8i;计数时按逢八进一的规则进行;用(34.6)8 或34.6Q表示。 总结:不同数制的表示方法有两种,一种是加括号及数字下标,另一种是数字后加相应的大写字母D、B、H、Q。 ②按权展开基本公式: 设一个基数为R的数值N,N=(d n-1d n-2 …d 1 d d -1 …d -m ),则N的展开为:N=d n-1 ×R n-1 +d n-2×R n-2+…+d 1 ×R1+d ×R0+d -1 ×R-1+…+d -m ×R-m。 说明:(d n-1 d n-2 …d 1 d d -1 …d -m )表示各位上的数字,R i为权。 例如:十进制数2345.67展开式为:2345.67=2×103+3×102+4×101+5×100+6 ×10-1+7×10-2 2、n进制转换为十进制的方法 n进制转换为十进制的方法:按权展开法(将n进制数按权展开相加即可得到相应的十进制数)。以二进制为例: 例如,将二进制数(1011.011) 2 转换成十进制数的方法为: (1011.011) 2=1×23+0×22+1×21+1×20+0×2-1+1×2-2+1×2-3=(11.375) 10

数制转换问题(完整)

数据结构课程设计 题目名称:数制转换问题 课程名称:数据结构 学生姓名: 学号: 学院名称: 指导教师:

目录 一.需求分析………………………………………………………二.概要设计………………………………………………………三.详细设计………………………………………………………四.调试测试………………………………………………………五.总结……………………………………………………………

一.需求分析 应用环境设定:生活中我们需要将M进制的数转换为我们所需要 的进制,从键盘任意输入一个M进制的数,对其 进行转换成其他三种进制的数,然后再从电脑中 显示出来,最终得到我们的结果。 用户界面:命令行界面,根据自己的要求,对界面的提示进行操作,正确输入我们需要的数据。 输入方式:首先输入将转换的进制数,回车确认;然后输入确定的数据,回车确认;接着选择要转换为的进制数,回车确 认。 输出方式:界面直接输出,启动程序后,按照界面提示,输入数据,直接回车确认,显示屏即输出我们的数据结果。 数据储存方式:全部在内存存放,不使用硬盘上的文件或其他数据 源,程序执行过程中和结束后不保存数据。 程序功能:1.根据界面提示输入M进制数据。 2.对任意M进制数据实行非M进制的转换。 二.概要设计 在此说明数据结构设计和关键的算法设计思想 1.用数组实现该问题 D2M()函数和M2D()函数是实现该问题的主要函数。D2M()函数是实现十进制转换为其它进制的函数,它是将输入的十进制数x取首先对需要转换的进制M取余,然后再对其取整,接着通过递归调用D2M()函数依次将得到的整数部分依次先取余后取整,并将所得的余

各种进制之间的转换方法

各种进制之间的转换方法 ⑴二进制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)二进制数11000000对应的十进制数是 A)384 B)192C)96 D)320 2)二进制数1010.101对应的十进制数是 A)11.33 B)10.625C)12.755 D)16.75 3)十进制整数100转换为二进制数是 A)1100100B)1101000 C)1100010 D)1110100 4)八进制数345对应的十进制数是 A)225 B)265 C)235 D)229 5)与十进制数4625等值的十六进制数为 A)1211B)1121 C)1122 D)1221 6)十进制数269转换为十六进制数为 A)10E B)10D C)10C D)10B 7)十六进制数1A2H对应的十进制数是 A)418B)308 C)208 D)578 8)与十六进制数26CE等值的二进制数是 A)011100110110010 B)0010011011011110 C)10011011001110D)1100111000100110 9)二进制数10100101011转换成十六进制数是 A)52B B)D45D C)23C D)5E 10)二进制数1111101011011转换成十六进制数是 A)1F5B B)D7SD C)2FH3 D)2AFH 11)为了避免混淆,十六进制数在书写时常在后面加上字母 A)H B)Q C)D D)B 12)下列4种不同数制表示的数中,数值最小的一个是 A)八进制数247 B)十进制数169 C)十六进制数A6D)二进制数10101000 13)与十进制数1023等值的十六进制数为 A)3FDH B)3FFH C)2FDH D)3FFH 14)16个二进制位可表示整数的范围是 A)0~65535 B)-32768~32767 C)-32768~32768 D)-32768~32767或0~65535 15)下列4种不同数制表示的数中,数值最小的一个是 A)八进制数52 B)十进制数44 C)十六进制数2B D)二进制数101001 16)有一个数是123,它与十六进制数53相等,那么该数值是 A)八进制数B)十进制数C)五进制D)二进制数 17)下列4种不同数制表示的数中,数值最大的一个是 A)八进制数227 B)十进制数789C)十六进制数1FF D)二进制数1010001 18)下列4种不同数制表示的数中,数值最小的一个是 A)八进制数36B)十进制数32 C)十六进制数22 D)二进制数10101100 19)下列4个无符号十进制整数中,能用8个二进制位表示的是 A)257 B)201 C)313 D)296 第 1 页共2 页

C语言类型强制转换

C语言类型强制转换 本篇主要介绍 C语言类型强制转换。 强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。 自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型到另一类的转换。例如: (float) a 把a转换为实型(int)(x+y) 把x+y的结果转换为整型在使用强制转换时应注意以下问题: 1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y) 写成(int)x+y则成了把x转换成int型之后再与y相加了。 2.无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进 行的临时性转换,而不改变数据说明时对该变量定义的类型。 例1: main() { float f=5.75; printf("(int)f=%d,f=%f\n",(int)f,f); } f<--5.75 将float f强制转换成int f float f=5.75;printf("(int)f=%d,f=%f\n",(int)f,f); 本例表明,f虽强制转为int 型,但只在运算中起作用,是临时的,而f本身的类型并不改变。因此,(int)f 的值为 5(删去了小数)而f的值仍为5.75。 例2:比如我们可以(int)'A',这样转换后的结果为A的ASCII码数值,因为那块内存本来就存的那个数,只是换个形式使用而已。知道上面的原则,我们 可以对任何数据类型进行转换,但是转换的结果可能不是你想像的结果,举例 (int)'9'的结果为多少?不是9而是0x39。来个高深点的printf("%d",'12'); 的输出是什么?正确答案是12594,因为printf("%d",'12'),打印的是存储12 的内存地址上的内容,即ASCII码值2存储在低位,1储在高位地址,0x32就是2 的ASCII码,0x31就是1的ASCII码,所以是0x3132,转换成10进制就是12594!

数制转换题

教学过程: 一、知识回顾 1、二进制数、八进制数、十六进制数转换成十进制数有什么共同规律?2、十进制数转换成二进制数、八进制数、十六进制数有什么共同法则? 3、完成下表:

二、习题分析 作业 答案 三、小结: 要求学生掌握进制的概念,掌握十进制与R进制的互相转换方法,并学会灵活运用。解决学生练习题,引导学生当堂复习,当堂消化,小结规律。 数制 1、数制的表示方法:为了区别不同进制数,一般把具体数用括号括起来,在括号的右下角标上相应表示数制的数字 2、一个基数R(即所使用的不同基本符号的个数),数字中使用0,1,2,……(R-1)个符号 3、每位有固定的权:即其基数的位序次幂 4、位序的排列法:从小数点处算起,由小数点向左,规定位序为0,1,2……;由小数点向右,规定位序为-1,-2,…… 5、采用“逢R进一”的进位方法 6、对任何一种进位计数制表示的数都可以写出其权展开的多项式之和

数制与数制的转换 教学目标: 1.掌握和理解各种数制的概念; 2.了解计算机为何认识二进制数值; 3.掌握权值的概念及应用; 4.掌握各种进制间的相互转换,特别是二进制与十进制间的相互转换。 教学重点: 1.权值的理解和运用; 2.特别是二进制与十进制间的相互转换; 教学难点: 进制间的相互转换 新课: 课堂引入: 写出一个成语:半斤八两 平分秋色是一个中性偏褒义的词。 提问:大家认为半斤跟八两是一样的质量还是不同的质量呢?(至少叫3个同学回答问题)学生回答:~~~~~~~~~~~ 老师解答:实际上“半斤八两”这个成语中的半斤和八两是一样的质量(用大家都习惯的话来说就是一样重的),这是为什么呢?我们说的半斤不是五两的么?呵呵,糊涂了吧,实际上这个成语是过去的,而非现在的,中国古称一斤的16两中,每一两就是一颗星,16两就是16颗星,它们是由北斗七星,南斗六星和福、禄、寿三星组成,买货人如把东西称给人家旺旺的,就得足了星(特别是福禄寿);如果买货人耍滑头克扣一两就减福,克扣二两就损禄,克扣三两就折寿,可见古代人对于诚信的重视。所以,半斤实际上就是八两,也就是一斤是十六两,这是过去的一种进制。 这个成语证明到以前有过逢十六两进一斤的历史,也就是过去有过十六进制。 提问:我们现在习惯用的是什么进制呢?(一起回答) 老师:现在习惯用的是十进制。 提问:那么同学们知道在我们国家实际上还存在那些进制呢?(至少3个同学回答) 学生回答:~~~~~~~~ 老师解答:我们国家至今为止应该是存在过好几种进制,它们分别是:二进制,八进制,十进制,十六进制,当然也还有六十进制(今天的内容不包含六十进制),目前,这些进制当中,我们生活中最为习惯最为常用的就是十进制。可是,我们人类现今的生活中有一个非常重要的工具它认识的是另外一种进制。 提问:除了人类能有这种科学的认识之外,难道还有别的物种或者非生命体能够有科学认识而且认识某种进制?那么到底是怎么回事呢?(学生举手回答问题) 教师解答:计算机认识二进制数值。 究竟计算机是如何认识二进制数的呢?如果时间允许,老师在这节可以也会给同学们做一个解答,时间不允许的话往后我会给同学们详细讲(毕竟这节课是老师的公开课嘛,所以还是尽量照章程办事,把本节课的知识点讲解完是吧,讲完本节课的主要内容后如果还有时间则作为认知的提高篇来讲解,哈哈~~~)。 引出课题:刚才老师提到了四种数制,这四种数制间有什么联系呢?那么,今天两节课我们要学习的内容也就是关于这几种数制的知识,这节课所要学习的主要内容有4个:1.

计算机应用基础第一章习题及答案

第一章习题 1. 将下列二进制数转换为十进制数 (1)10101 (2)0.10101 (3)1010.101 2. 写出下列八进制数的按权展开式 (1)(247)8 (2)(0.651)8 (3)(465.43)8 3. 将下列十六进制数转换为十进制数 (1)(6BD )16 (2)(0.7A )16 (3)(8E.D )16 4. 将下列十进制数转换为二进制数,小数部分精确到小数点后第四位 (1)(47)10 (2)(0.786)10 (3)(53.634)10 5. 将下列二进制数转换为八进制数 (1)(10111101)2 (2)(0.11011)2 (3)(1101011.1101)2 6. 将下列二进制数转换为十六进制数 (1)(1101111011)2 (2)(0.10111)2 (3)(110111.01111)2 第一章习题答案 1.(1) (21)10 (2) (0.9375)10 (3) (10.625)10 2.(1) (247)8=2×28+4×18+7×08 (2) (0.651)8=6×18+5×28+1×38 (3) (465.43)8=4×28+6×18+5×08+4×18+3×28 3. (1) (1725)10 (2) (0.4765625)10 (3) (142.8125)10 4. (1) (101111)2 (2) (0.1100)2 (3) (110101.1010)2 5. (1) (275)8 (2) (0.66)8 (3) (153.64)8 6. (1) (77B )16 (2) (0.B8)16 (3) (3 7.78)16

c语言强制转换四舍五入

在C语言中,强制转换后的数是四舍五入还是去尾? 去尾 要想四舍五入的话 (int)(number+0.5) 都是直接去尾的。当为数太多时直接截断。所以在强制转换时要很注意 C语言有没有数据的四舍五入?什么情况下会用到四舍五入?数据类型转换?有四舍五入的情况,在你想要保留几位小数的时候,多余的紧接着的一位要四舍五入 不过C里面没有提供四舍五入的函数,不过你可以这样 a = (int)(a*100 + 0.5)/100 这只是一个小技巧,对a的第三位进行四舍五入 提问者评价 +0.5可以解决这个问题!谢谢你! C语言中的float和double类型数据是浮点数,所以小数部分就存在四舍五入问题,当指定输出位数在精度范围之内时,系统会自动舍入,无需人工干预,如果小数部分也在精度范围内,比如10.0/2.0 = 5.0,2位以上的输出位数时,后面的都是0,此时,当然不需要舍入了。 数据类型转换有两种方式,一种是默认强制转换,比如将char、short、Int、Long和float类型数据赋给double类型变量时,编译程序会自动实施转换,这是因为,在精度更高时,这样的转换是内有损失的。另一种是手动强制类型转换,比如dnum = (double)inum;,意思是将整形变量inum首先转换为双精度数据,然后再付给dnum。当将高精度类型变量赋给低精度类型变量时,除非手动强制转换,否则,编译程序会有提示的。 数据强制转换是用舍弃的方法,不会用四舍五入,什么时候用四舍五入是需要详细说明的,也就是你的业务需求而定,你可以把数字+0.5,然后进行强制转换 ouble强制转换成int型的时候保留整数部分的。。 比如double a=1.5; int b=a; a就是1。 C语言强制类型转换问题 2012-03-11 17:52匿名|分类:C/C++ |浏览2634次 int a,b; //keil c里的int,也就是16位。 a=0000; b=0x1234; a=(char)(b);

数制间的转换规则

数制间的转换规则 1.十进制数与非十进制数之间的转换 (1)十进制数转换成非十进制数 把一个十进制数转换成非十进制数(基数记作R)分成两步.整数部分转换时采用“除R取余法”;小数部分转换时采用“乘R取整法”。 (2)非十进制数转换成十进制数 非十进制数(基数记作R,第j个数位的位权记作Rj)转换成十进制数的方法:按权展开求其和。 2.非十进制数之间的转换 (1)二进制数与八进制数之间的转换 ①二进制数转换成八进制数的方法.以小数点分界,整数部分自右向左、小数部分自左向右,每三位一组,不足三位时,整数部分在高位左边补0,小数部分在低位右边补0,然后写出对应的八进制数码。 ②八进制数转换成二进制数的方法:用八进制数码对应的三位二进制数代替八进制数码本身即可。 (2)二进制数与十六进制数之间的转换 ①二进制数转换成十六进制数的方法:以小数点分界,整数部分自右向左、小数部分自左向右,每四位一组,不足四位时,整数部分在高位左边补0,小数部分在低位右边补0,然后写出对应的十六进制数码。 ②十六进制数转换成二进制数的方法:用十六进制数码对应的四位二进制数代替十六进制数码本身即可。

五、例题讲解 例1 将十进制数59.625转换成二进制是。(2000年题) (1)本题的正确思维及答案:一个十进制数转换成二进制数时,整数和小数部分要分别考虑。另外,若能熟练记忆下表,利用二进制转换成十进制时的展开式,就可以直接写出对应的二进制数。 20 1 25 32 2-1 0.5 21 2 26 64 2-2 0.25 22 4 27 128 2-3 0.125 23 8 28 256 2-4 0.0625 24 16 29 512 2-5 0.03125 答案:111011.101 (2)学生易犯的错误:小数的转换方法不清楚及运算不熟练。(3)此题的拓展及变题: a.二进制数1011.1010可转化为十进制数C 。(1998年题)。 A)11.8 B)11.125 C)11.625 D)11.525 b.十进制数329可转化为八进制数A 。(1998年题) A)511 B)501 C)411 D)401 c.十进制数0.8125的二进制数表示为B (1999年题)。 A)0.1011 B)0.1101 C)0.1111 D)0.1001 d.八进制数34.54的二进制数表示为A (1999年题) A)011100.101100 B)101100.011100 C)100011.100101 D)011100.001011

数制的概念及转换

数制的概念及转换 一、进位计数制 以十进制为例: [例1]8756.74=8×1000+7×100+5×10+6×1+7×0.1+4×0.01 =8×103+7×102+5×101+6×100+7×10-1+4×10-2 数码(10个):0、1、2、3、4、5、6、7、8、9 进位法则:逢十进一 基数:10(数码的个数) 权:10 n-1 十制数的表示方法:( ***** )10 或***** D 任何一个十进制数都可以写成以10为基数按权展开的多项式,即: S=A1*10 n-1 +A2*10 n-2 +…+A N-1*101 +A N*100 + A N+1*10-1 +… 说明:(A1,A2,……A N)表示各位上的数字 强调:第一个权的指数是多少?与位数的关系 二、二进制数 1、计算机中为何采用二进制数: 十进制的缺点:数码多,对计算机逻辑电路要求高 二进制的优点:使用电子器件表示两种物理状态容易实现,两种状态的系统稳定性高,二进制运算简单、硬件容易实现、存储和传送可靠等 (1)可行性 二进制数只有0、1两个数码,采用电子器件很容易实现,而其它进制则很难实现。 (2)可靠性 二进制的0、1两种状态,在传输和处理时不容易出错。 (3)简易性 二进制的运算法规简单,这样,使得计算机的运算器结构大大简化,控制简单。 (4)逻辑性 二进制的0、1两种状态,可以代表逻辑运算中的“假”和“真”两种值。 2、二进制: 数码(2个):0、1 进位法则:逢二进一(1+0=1 0+1=1 0+0=0 1+1=10) 基数:2 权:2 n-1 二进制数的表示方法:( ***** )2 或***** B [例2]二进制的运算: 1+1=10 10+1=11 11+1=100 100+1=101 101+1=110 3、二进制转换成十进制: [例3](1101) 2 =1×23+1×22+0×21+1×20 =8+4+0+1 =(13) 10 [例4](10110.101) 2 =1×24+0×23+1×22+1×21+0×20+1×2-1+0×2-2+1×2-3 =16+0+4+2+0+0.5+0+0.125 =(22.625) 10 结论:把二进制转换成十进制只要把二进制数写成基数2按权展开的多项式。 练习:二进制转换成十进制: (1110101) 2=(117) 10

相关主题
文本预览
相关文档 最新文档