长整数的进制转换

  • 格式:doc
  • 大小:80.06 KB
  • 文档页数:15

下载文档原格式

  / 15
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

*****大学

信息与计算科学课程设计题目:长整数的进制转换

成员:。。

。。

。。

小组成员分工:(编程、调试程序)

(编程、撰写报告)

(编程、后期整理)

一、实验目的

1、熟练掌握C语言课程中所学的基本理论和基本方法;

2、加强分析和解决问题的能力;

3、加强同学们之间的团队合作经验;

4、通过综合C语言的基本知识来解决实际问题。

二、题目要求

题目:

用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为:

m=a[k]×10k-1+a[k-1]×10k-2+….+a[2]×10+a[1]

其中a[0]保存该长整数的位数。

要求:

(1) 转换为16进制数输出;

(2) 转换成8进制数输出。

三、算法设计

1、长整数

(1)由题目可知,用一个整型数组表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数m表示为:

m=a[k]×10k-1+a[k-1]×10k-2+….+a[2]×10+a[1]

(2)长整数主程序:

_int64 Num=0;

for(i=1;i<=n;i++)

{

Num+=a[n-i+1]* pow(10,i-1);

}

cout<<"输入的长整数为:";

printf("%I64d",Num);

cout<

2、十进制转十六进制

(1)十六进制:英文名称Hex number system,是计算机中数据的一种表示方法。它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N 进制的数可以用0---(N-1)的数表示超过9的用字母A-F。

采余数定理分解

例:将十进制数487710 转成十六进制数

487710÷16=30481....14(E)

30481÷16=1905 (1)

1905÷16=119 (1)

119÷16=7 (7)

7÷16=0 (7)

结果:487710(10)=7711E(16)

(2)十进制转换为十六进制主程序:

void SixteenChange(_int64 num1)

{

string aa[100];

int y=0;

while(num1!=0)

{

int k=num1%16;

num1/=16;

if(k<10)

aa[y]=k+48;

else

{

switch(k)

{

case 10:

aa[y]='A';

break;

case 11:

aa[y]='B';

break;

case 12:

aa[y]='C';

break;

case 13:

aa[y]='D';

break;

case 14:

aa[y]='E';

break;

case 15:

aa[y]='F';

}

}

y++;

}

cout<<"十六进制数转化结果:";

for(int z=y;z>=0;z--)

{

cout<

}

cout<

}

(3)十进制转换为十六进制流程图:

开始

string aa[100];int y=0;

num1!=0

int k=num1%16; num1/=16;

K是否大于10

aa[y]=k+48 switch(k)

case 10: case11: case 12: case 13: case 14: case 15: aa[y]='A'aa[y]='B’aa[y]='C'aa[y]='D'aa[y]='E'aa[y]='F'

break

y++

int z=y

z-- z>=0 z

输出结果aa[z]

结束

3、十进制化八进制

(1)八进制:英文名称Octal,缩写OCT或O,是计算机中数据的一种表示方法。采用0,1,2,3,4,5,6,7八个数字,逢八进位。

采余数定理分解

例:将十进制数115 转化为八进制数

115÷8=14 (3)

14÷8=1 (6)

1÷ 8=0 (1)

结果:115(10)=163(8)

(2)十进制转换为八进制主程序:

void EightChange(_int64 num1)

{

string aaa[100];

int y=0;

while(num1!=0)

{

int k=num1%8;

num1/=8;

aaa[y]=k+48;

y++;

}

cout<<"八进制数转化结果:";

for(int z=y;z>=0;z--)

{

cout<

}

cout<

}