永发信息网

求2、8、10、16进制之间的转换表

答案:4  悬赏:30  手机版
解决时间 2021-02-06 11:23
求2、8、10、16进制之间的转换表
最佳答案
用Windows中的计算器(科学型)即可很方便地进行数制间转换
不必用2、8、10、16进制之间的转换表
全部回答
#include #include #include "stdlib.h" #include #define size 100 //定义一个栈 typedef struct { int x[size]; int top ; }stack; //栈初始化 void init(stack &p){ p.top=0; } //入栈 int push(stack &p,int &e){ if (p.top0) { e=p.x[--p.top]; return 1; } return 0; } //将 n进制数据转化为十进制表示 void td(char s[],int n,int &num){ char *p; int e; p=s; num=0; while(*p){ if(*p>='A') //16 进制转化 e=*p-'A'+10; else e=*p-'0'; p++; num=num*n+e; } } //将十进制转化为 m 进制 void tp(int num,int m,char s[]){ // int n=0,e; char *p; stack b; init(b); p=s; while(num){ //将十进制数据逐位分离 压入栈中 此时 数据为倒序 n=num%m; if(n>9) e=n-10+'A'; else e=n+'0'; push(b,e); num/=m; } while(pop(b,e)){ //从栈中取出元素,存入数组 s 中 此时 数据为顺序 *p=e; p++; } *p='\0'; //在数组 尾部加结束标志 } int check(char s[],int n){ char *p; p=s; if(n<=10){ while(*p){ if(*p-'0'>n) return 1; p++; } } else if(n>10){ while(*p){ if(*p>='A'&&*p-'A'+10>n) return 1; p++; } } return 0; } void trans(char s[],int n,int m){ int *p,num; td(s,n,num); s[0]='\0'; tp(num,m,s); } void main(){ int n,m; char s[size],c; int fp=1; //是否结束的标志 do{ puts("\t\t\t数据的各个进制之间的转化\n"); s[0]='\0'; //数组初始化 printf("\n输入一个数据: "); gets(s); //读入数据 字符串型 printf("\b输入原来的进制 和 要转化的进制, 如 10-2 : "); scanf("%d%c%d",&n,&c,&m); //读入 进制转化 由 n进制转化为 m进制 输入形式 如:10-2 16-2 if(check(s,n)) { //判断是否合法 printf("\n\t错误 !输入的数据与进制不相配, 按任意键,继续输入。"); getch(); } else{ printf("\n结果\n\t\t\t%d 进制 : %s ",n,s); trans(s,n,m);//转化 printf("\n \t\t\t%d 进制 : %s \n\n",m,s); //输出 数据 字符串型 printf("\t\t\t继续输入 1, 退出输入 0: "); scanf("%d",&fp); } c=getchar(); //读取 回车键 system("cls"); }while(fp); }
十进制整数转换r进制(r可以是任何整数,比如3、5、7)整数,方法就是除r取余,十进制转八或十六进制方法类似转二进制,除以基数取余就行了,比如转八进制就除8,转十六进制就除16。 二进制和八进制、十六进制之间转换采用的是分组转换法,因为2、8、16之间是存在幂的关系的。所以,二级制转八进制,以小数点为中心向两边(二进制小数也可以转为八进制小数)分组,每3位为一组,因为2的3次方=8,然后将各组直接写成相应的八进制数就可以了(3位二进制数最大是7,不会超过8)。转十六进制类似,只是这时候需要每4位分一组。反过来,八进制、十六进制转二进制就简单了,只要把每一位都写成二进制数就行了。八进制和十六进制之间一般借助二进制来转换,不容易出错。 十进制小数转r进制小数,方法为乘r取整,每次乘以相应之后基数后取结果的整数部分即可。需要注意的是并非所有的十进制小数都能完全转化为r进制小数,这时就需要取近似值。 二进制(包括小数)转为十进制数时,采用乘权相加法,每一位数乘以相应位的权制然后相加就ok。比如1101.101这个数,以小数点为中心,向左每位权值分别为1、2、4、8,向右每位为0.5、0.25、0.125(也就是二分之一、四分之一、八分之一)。正数1101.101b=1*1+0*2+1*4+1*8(整数部分)+1*0.5+0*0.25+1*0.125(小数部分)=13.625d。八进制、十六进制转十进制方法类似,只要你搞清楚每位的权值就行了。 如此详细,得分当之无愧。
计算机内部全是二进制,02H INT 21H MOV DL,0AH DIV BH MOV DL16进制转换为10进制比较简单,提供一种方法,02H INT 21H 8进制和2进制其实也很容易关键在于如何输出,输出为十进制数 代码如下: MOV AX,在内存中反映的是16进制数,我现在很忙,我认为可以不断地做除法,用循环结构,56H MOV BH: 比如16进制数为56H, MOV AH,AL MOV AH,等闲下来给你做一个程序实现这些功能,AH
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
男猴女鸡相配吗
CZ3163是在首都机场那个航站楼出呢?
伊娜·爱贝专业儿童摄影怎么去啊,我要去
道口宾馆怎么去啊,有知道地址的么
cisco的交换机可以ping通过pc,pc也可以ping
西安李家村万达广场上面的短租公寓一天多少钱
什么是“金融复利倍增”?
专业冲洗手机照片地址在什么地方,我要处理点
金州新区残疾人劳动就业服务所在哪里啊,我有
渊壤的意思是什么啊?知道的请说下!
【亟需】亟需和急需的区别?请高人回答,非常想
我们学校来的单位要签人事代理合同,那位可以
Fate/Zero的同人,最好bg,b l也行,迪卢木多
物理公式W=U/q与C=Q/U
澳丽名苑西门地址在哪,我要去那里办事
推荐资讯
中国信合(大乌江镇箐口村)地址好找么,我有些
大王卡就只能用身份证激活?可以用其他人的身
苏小妹的意思是什么啊?知道的请说下!
我买的是合肥到成都的飞机票 给我的是行程单
电视剧《寒夜》大结局
读史有感(10分)科技革命使世界发生了翻天覆
万达汽车装璜我想知道这个在什么地方
邛崃市新知助培训学校地址在什么地方,想过去
王子一号造型NO.1地址有知道的么?有点事想过
放开那三国2 vip10 开启酒馆热点武将抽取什么
找一部小说。男女主是同一个大学的,女主好像
★译林版高中英语总词汇表★
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?