文档库 最新最全的文档下载
当前位置:文档库 › 微机原理十六进制转十进制课设

微机原理十六进制转十进制课设

微机原理十六进制转十进制课设
微机原理十六进制转十进制课设

北华航天工业学院

课程设计报告(论文)

设计课题:代码转换

(十六进制数向十进制数之间的转换)专业班级:电子信息工程B09212

学生姓名:

指导教师:

设计时间:2011--12--23

北华航天工业学院电子工程系

微机原理课程设计任务书姓名:专业:电子信息工程班级:B09212

指导教师:职称:

课程设计题目:

代码转换(十六进制数向十进制数之间的转换)

已知技术参数和设计要求:

1.编程实现十六进制数向十进制数之间的转换。

2.学习数值和数值的相互转换方法。

3.按屏幕提示要求输入,从屏幕上获得正确结果。

4.实现循环运行。

所需仪器设备:

计算机

成果验收形式:

1. 笔试

2. 屏幕显示

3. 设计报告

参考文献:

微机原理与接口技术

8086实验指导书

时间安排第十六周:

编辑程序进行调试第十七周:

验收

指导教师:教研室主任:

年月日

目录

内容摘要 (1)

一.课设概述 (2)

1.设计内容 (2)

2.实验要求 (2)

3.实验目的 (2)

二.设计环境 (2)

1.Masm for window集成实验环境介绍 (2)

2.DOS系统功能调用 (2)

3.汇编语言的上机过程 (3)

三.设计方案 (4)

1.设计思想 (4)

2.设计方案 (4)

四.总原理图 (6)

五.程序清单 (6)

1.改进的新方案 (6)

六.运行结果 (10)

七.实验体会 (11)

八.参考文献 (11)

内容摘要

汇编语言是一种面向计算机的程序设计语言,和机器语言相比,汇编语言编写程序可以用助记符来表示指令的操作码和操作数,也可以用标号来替代地址,常量和变量,还引入了新的汇编指令——伪指令和宏指令。

高级程序设计语言使用了更接近人们的自然语言和习惯的教学语言来描述具体的算法,使编写的程序更加直观和简练。高级语言通常都包含有各种函数计算,字符串处理,数据I/O等功能。高级语言通常是独立于具体机器的,程序员可不必了解机器的指令系统和内部的具体结构,可以把精力集中在正确掌握语言的语法桂策和程序运算上。编写的程序容易被阅读和修改。

此次课设内容以微软公司的宏汇编MASM为背景,主要学习汇编的语法规则,同时应用一些磁盘操作系统的功能调用和基本输入输出系统的中断调用。

DOS是用户和微型计算机之间的接口,用户依靠DOS来管理微型计算机。DOS向用户提供了许多命令及系统功能,用户可以在DOS 提示符下键入命令来实现对计算机的操作。课设中多次用到DOS指令。

索引关键词:汇编语言伪指令宏指令DOS中断

一.课设概述

1.设计内容:

编程实现十六进制数向十进制数之间的转换。

2.实验要求:

编程实现十六进制数向十进制数之间的转换。

3.实验目的:

学习数值和数值的相互转换方法,并熟练掌握汇编语言语法的使用,DOS系统功能调用,并学习循环结构的设计。

二.设计环境

1.Masm for window集成实验环境介绍

Masm for Windows 集成实验环境是从事一线教学的大学教师针对汇编语言初学者的特点开发的一个简单易用的汇编语言的学习软件,它具有错误信息自动定位、关键字实时帮助(动画演示汇编指令执行过程)、语法着色、无限的撤消与恢复、WORD式的查找、替换、定位、支持中文长文件名、软件可以安装在任意文件夹等功能。

2.DOS系统功能调用

使用DOS提供的程序控制硬件。优点是兼容性好,使用方便。

DOS是IBM PC系列微机的操作系统(现在的微机仍能运行DOS,而且新的操作系统也能继续提供几乎所有的DOS功能调用)负责管理系统的所有资源,协调微机的操作,其中包括大量可供用户调用的服务程序。DOS的功能调用不依赖于具体的硬件系统。

所有的DOS系统功能调用都是利用软件中断指令INT 21H来实现的。也就是说,在程序中需要调用DOS功能的时候,只要使用一条INT 21H指令即可。INT 21H是一个具有90多个子功能的中断服务程序,这些子功能大致可以分为四类:设备管理、目录管理、文件管理和其他。其功能一览表可参见附录。为了方便用户使用这些子功能,INT 21H对每一

个子功能都进行了编号——称为功能号。这样,用户就能通过指定功能号来调用INT 21H 的不同子功能。

DOS系统功能调用的方法如下:

(1)AH->功能号。

(2)在其他寄存器中放入该功能所要求的入口参数。

(3)在执行INT 21H指令。

(4)分析出口参数。

3.汇编语言的上机过程

源文件的建立和汇编:

(1)建立源程序文件规定源程序文件的扩展名为.ASM

(2)汇编源程序文件

检查源程序中的语法错误并给出出错信息

产生目标文件(OBJ文件),列表文件(LST文件)

和对应文件(CRF文件)

展开宏指令

目标文件的链接:

(1)找到要连接的所有目标文件

(2)确定所有段地址的地址值

(3)确定所有浮动地址和外部符号所对应的存储地址

(4)生成.EXE可执行文件

执行文件的调用

三.设计方案

1.设计思想

在计算机系统中有多种数制和编码,常用的数制有二进制、八进制以及十六进制,常用的代码有BCD码、ASCll码和七段显示码等。这些数制和编码根据其作用的不同,在存储形式上也有差异。在实际应用中,它们也因使用的要求不同而有所差异。在配备操作系统管理程序的计算机中,有些代码转换程序已在系统管理软件中编好。还有些代码转换需要根据使用要求通过编程完成。因此,代码转换是非数据处理中最常见的情况。

十六进制向十进制的转换分成两个大的步骤:

一是从十六进制向二进制的转换,由于十六进制和二进制的特殊关系,它们之间的转换非常简单。

二是从二进制转换为十进制,相对而言,这种转换复杂一些。所以该模块的核心是实现二进制数向十进制数的转换。方法是将要转换的二进制数预先放到AX寄存器中,判断AX中数的符号,若为负数,则将负号送入输出缓冲区,并求AX的绝对值;若AX中的数为正数,则不做其他处理,此时AX中即为无符号二进制数。然后将无符号二进制数转换成十进制数,可采用将AX除以 10,得到第一个商和第一个余数,第一个余数就是所求十进制数的个位:将第一个商除以10,得到第二个商和余数,第二个余数就是所求十进制数的十位数,重复以上过程,一直循环到商为0时,得到的余数就是所求十进制数的最高位数。这就是数制转换中常用的“除模留余倒排列”法则。

2.设计方案

(1)实现十六进制数向二进制数的转换

第一步:实现十六进制数的输入和对应二进制数的转换。利用DOS系统功能中的1号输入字符的功能,接收输入的十六进制数,将其转换成对应的二进制数(若是0-9之间的数直接屏蔽高4位,若是A-F之间的数在屏蔽高4位后还要加9)。BX中存放的是二进制数的结果,利用算数左移指令使BX左移4位,然后与下一次转换后的数相加。如此循环4次,得到对应的二进制数。

第二步:实现显示转化后的二进制数。利用ROL和RCL指令,从最高位起循环取出每位二进制数,将其转换成对应的ASSCII码,调用DOS系统功能调用中2号功能显示。

(2)实现二进制数向十六进制数的转换。

用循环左移指令ROL每次移动4位,取出移到最低的4位,利用十六进制数所对应的ASSCII码比其本身大30H(0-9)或37H(A-Z)的关系,将低4位转换成所对应的ASSCII 码,在调用DOS系统功能2号(显示字符)功能,将转换后的字符显示出来,如此循环四次。

(3)本程序的难点是如何把二进制转化为十进制,并将其输出。

我们采用了除以10,把取余数保存的方法,现在以十进制数132为例,采用除以10并取余的方法,主要是因为不知道有二进制转化的真值所构成的十进制数有几位。

132/10=13………2 保存2,又因为13!=0,所以继续运算

13/10=1…………3 保存3,又因为1!=0,所以继续运算

1/10=0 …………1 保存1,0==0,所以结束此运算

如下图所示:

经过相关处理,把保存的数据变成0-9的ASSCII码。所以保存的数据为:

“2”“3”“1”

在经过转置,把倒序的结果顺序化,得到结果:

“1”“3”“2”

这样就解决了二进制转化为十进制数的算法。

四.总原理图

开始

显示菜单信息

调入键盘输入

五.程序清单

1.改进的新方案

DA TA SEGMENT

CR EQU 0DH;回车

LF EQU 0AH;换行

DAT1 DB'Qingshurushiliujinzhishu:',CR,LF,'$';请输入十六进制数

DAT2 DB'Shuchushijinzhishu:',CR,LF,'$';输出十进制数

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DA TA

MAIN PROC FAR

START:

CALL HEXIBIN ;16-2

CALL CRLF ;换行

CALL BINIDEC ;2-10

CALL CRLF

JMP MAIN ;输入下一个四位十六进制数

RET

MAIN ENDP

HEXIBIN PROC NEAR

MOV AX,DA TA

MOV DS,AX

MOV DX,OFFSET DA T1 ;DS:DX指向字符串DAT1

MOV AH,09H ;DOS 9号功能调用

INT 21H

MOV BX,0 ;将BX清零

MOV DX,0 ;将DX清零

NEWCHAR:

CMP Dx,04H ;用DX控制输入数的个数为4位

JZ EXIT

MOV AH,01H ;键盘输入数据

INT 21H ;DOS 1号功能调用

SUB AL,30H ;ASCII 转为2进制

JL EXIT ;如果小于零就跳出,输入不合法

CMP AL,10D ;判断是否超出十

JL ADD_TO ;如果没超出十就是十进制数;如果超出十那

么可能是A到F的字母输入

SUB AL,27H ;将ASCII变为十进制字母要加九

CMP AL,0AH ;将它与字母a转化成的数比较

JL EXIT ;如果小就跳转

CMP AL,10H ;将它与字母f的转化码比较

JGE EXIT ;如果大就跳出

ADD_TO:

MOV CL,4

SHL BX,CL

MOV AH,0

ADD BX,AX

INC DX

JMP NEWCHAR ;在BX中存储转化的二进制数为二进制转化为

十进制做准备

EXIT:

RET

HEXIBIN ENDP

BINIDEC PROC NEAR

MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET DA T2

MOV AH,09H

INT 21H

MOV CX,10000D

CALL DEC_DIV

MOV CX,1000D

CALL DEC_DIV

MOV CX,100D

CALL DEC_DIV

MOV CX,10D

CALL DEC_DIV

MOV CX,1D

CALL DEC_DIV

RET

DEC_DIV PROC NEAR

MOV AX,BX ;将BX的数送入AX中

MOV DX,0 ;将被除数高位清零

DIV CX

MOV BX,DX ;余数保存在BX中

MOV DL,AL ;商放入DL显示

ADD DL,30H ;将数变为ASCII码

MOV AH,02H

INT 21H

RET

DEC_DIV ENDP

BINIDEC ENDP

CRLF PROC NEAR

MOV DL,0AH

MOV AH,02H

INT 21H

MOV DL,0DH

MOV AH,02H

INT 21H

RET

CRLF ENDP

CODE ENDS

END START

六.运行结果

通过设计和编写程序代码,运行程序后,其结果先为显示开始界面几位菜单界面,而后随意输入一个小于4位的十六进制数,打完字敲回车,马上出现所对应的十进制数。当连续输入4位的十六进制数直接输出十进制数,同时,再打回车,可以再输入十六进制数,并且可以循环运行。

七.实验体会

通过这次的课程设计,让我们对汇编语言有了更进一步的认识,加强了我们用汇编语言的能力。并经过修改,完成了简单的设计。

汇编语言程序设计是一门很抽象的科学,学起来也比较难,但随着学习的推进,以及上机编程,逐渐感到轻松,在这次课程设计中,让我更加熟悉了汇编语言的一些基本的指令;掌握了汇编语言的一些基本的中断调用功能,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制;熟练的利用子程序和宏进行编程。

在设计过程中,不断对程序进行修改,改进,增强了自己分析问题解决问题的能力:在不断的调试中,也让自己发现了自己存在的一些错误以及一些调试时应注意的问题,同时也更深的理解了寄存器,存储器等工作原理以及一些指令执行后对它们的改变,例如,int指令会改变al的值,在编程时应注意这方面的问题。

在编写过程中,让我深刻的体会到了科学的严谨性。有时一个逗号或者写错一个字母这样一点点小错误,就会产生很大的错误,导致调试的失败。

当设计一步步接近成功,每一个子程序的调试成功,都让自己感到喜悦,从中体会到编程的乐趣,有一种成就感,也让自己树立了信心,增强了对汇编语言程序设计的兴趣。八.参考文献

《微型计算机原理与接口技术》第1版张荣标等编著

《微型计算机原理与接口技术》第2版张荣标等编著

电子工程系微机原理课程设计成绩评定专业:电子信息工程班级: B09212 学号:姓名:

课题名称代码转换(十六进制数向十进制数之间的转换)

设计任务与要求

学习数值和数值的相互转换方法。多文件的链接方法。编程实现十六进制数向十进制数之间的转换,并按屏幕提示要求输入,从屏幕上获得正确结果。最后进行循环运行。

指导

教师

评语

建议成绩:指导教师:

课程

小组

评定

评定成绩:课程负责人:

年月日

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

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

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

一,十进制转换十六进制 若十进制数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

十进制转十六进制c语言函数

十进制转十六进制c语言函数 今天有位朋友在群里面问如何接收串口调试助手发来的十六进制数据,并以十六进制的形式显示在LCD上。比如串口调试助手上发送十六进制数据3C,单片机带的LCD上也显示3C。单片机接收到来自电脑串口的数据0x3C后,存储到一个变量中,当我们调用显示数字的函数时,实际上显示出来的是十进制的数据,例如发送0x3C,会显示十进制数据60。看来要想显示十六进制,还不是那么容易。十六进制中,包含0~9数字,还包含A~F字母,看来要想显示,必须要用显示字符的函数而不能用显示数字的函数了。 但是不能直接调用显示字符的函数。因为要想显示3C,实际上是要显示2个字符,你如果直接把数据带进去,实际上他会认为是一个字符的ASCII码。 于是我们要把发过来的数据变换成两个字符,用下面的公式: shi = rece_data/16; // 获取第一位 ge = rece_data%16; // 获取第二位 然后把数字转换成字符: switch(shi) { case 0:shi='0';break; case 1:shi='1';break; case 2:shi='2';break; case 3:shi='3';break; case 4:shi='4';break; case 5:shi='5';break; case 6:shi='6';break; case 7:shi='7';break; case 8:shi='8';break; case 9:shi='9';break; case 10:shi='A';break; case 11:shi='B';break; case 12:shi='C';break; case 13:shi='D';break; case 14:shi='E';break; case 15:shi='F';break; default:break; } switch(ge) { case 0:ge='0';break; case 1:ge='1';break;

高中信息技术基础进制转换二进制十进制十六进制转换转化

2进制数转换为10进制 (110)2转化为十进制 10进制整理转换成2进制 于是,结果是余数的倒排列,即为: (37)10=(a5a4a3a2a1a0)2=(100101)2 16进制转化成2进制、2进制转化成16进制 (二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C++程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。) 16进制转化成2进制:每一位十六进制数对应二进制的四位,逐位展开。 二进制数转为十六进制:将二进制数转换成十六进制数是将二进数的整数部分从右向左每四位一组,每一组为一位十六进制整数,不足四位时,在前面补0 (FB)16=(1111 ,1011)2 互转

2进制与16进制的关系: 2进制0000 0001 0010 0011 0100 0101 0110 0111 16进制0 1 2 3 4 5 6 7 2进制1000 1001 1010 1011 1100 1101 1110 1111 16进制8 9 A B C D E F 可以用四位数的二进制数来代表一个16进制,如3A16 转为二进制为: 3为0011,A 为1010,合并起来为00111010。可以将最左边的0去掉得1110102 右要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,将各单位对照出16进制的值即可。 16进制数转换为10进制数 假设有一个十六进数 2AF5, 那么如何换算成10进制呢? 用竖式计算: 2AF5换算成10进制: 直接计算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 (别忘了,在上面的计算中,A表示10,而F表示15) 假设有人问你,十进数 1234 为什么是一千二百三十四? 你尽可以给他这么一个算式: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0 如十进制数2039 它可以表示为:2*10^3+0*10^2+3*10^1+9*10^0

1十六进制数1000转换成十进制数是____

自测题6 一、选择题(每题2分,共60分) 1、十六进制数1000转换成十进制数是:____ (A) 4096 (B) 01024(C) 2048 (D) 8192 2、内存储器可与微处理器____交换信息 (A) 不能(B) 间接(C) 部分(D) 直接 3、3英寸的软盘,写保护窗口上有一个滑块,将滑块推向一侧,使写保护窗口暴露出来,此时:____ (A) 只能写盘,不能读盘(B) 只能读盘,不能写盘(C) 既可读盘,又可写盘(D) 不能读盘,也不能写盘 4、在微型计算机中,下列设备属于输入设备的是:____ (A) 打印机(B) 显示器(C) 软盘(D) 键盘 5、目前使用的防杀病毒软件的作用是:____ (A) 检查计算机是否感染病毒,清除已感染的任何病毒(B) 杜绝病毒对计算机的侵害(C) 检查计算机是否感染病毒,清除部分已感染的病毒(D) 查出已感染的任何病毒,清除部分已感染的病毒 6、鼠标是微机的一种:____ (A) 输出设备(B) 输入设备(C) 存储设备(D) 运算设备 7、在当前盘当前目录下有一个文件,其内容为: CD\ MD\XYZ\AB\B\C CD XYZ\AB\B 如果首先执行上述文件,并且在执行过程中没有错误发生,则接着执行的下列命令中,不会发生错误的是:____ (A) MD C (B) CD AB(C) RD C (D) RD B

8、为向用户提供方便、快捷的操作,可在根目录下设置可执行文件的搜索路径,这时应使用____命令。 (A) CD(CHDIR)(B) MD(MKDIR)(C) TREE (D) PATH 9、汉字国际码(GB2312-80)规定的汉字编码,每个汉字用:____ (A) 一个字节表示(B) 二个字节表示(C) 三个字节表示(D) 四个字节表示 10、查看磁盘卷标的DOS命令是:____ (A) VER (B) DIR (C) VERIFY (D) VOL 11、检查指定驱动器上文件、目录以及文件分配表(FAT),并产生一个报告,同时还显示未使用的内存数量。该DOS命令是:____ (A) CHDIR (B) CHKDSK (C) DISKCOMP(D) ECHO 12、拷贝一张软盘上的内容到另一张软盘上去的DOS命令是:____ (A) XCOPY (B) DISKCOPY(C) COPY (D) BACKUP 13、DOS文件名对字符的选用是有限制的。下列四个字符中,哪个能够作为一个文件的文件名中的第一个字符:____ (A) .(小数点)(B) $ (C) * (D) 14、C语言中,int类型数据占2个字节,则long类型数据占字节数:____ (A) 1(B) 2(C) 4(D) 8 15、若int类型数据占两个字节,则下列语句的输出为:____ (A) -1,-1 (B) -1,32767(C) -1,32768(D) -1,65535 int k=-1; printf("%d,%u\n",k,k); 16、若有定义:char *p1,*p2,*p3,*p4,ch;则不能正确赋值的程序语句为:____ (A) p1=&ch; scanf("%c", p1); (B) p2=(char*)malloc(1); scanf("%c", p2);(C) p3=getchar(); (D) p4=&ch; *p4=getchar(); 17、与以下定义等价的是:____int *p[4];

各种进制之间转换方法

各进制转换方法(转载) 一、计算机中数的表示: 首先,要搞清楚下面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语言 程序代码: #include #include #include /*求字符串长度函数*/ int strlengh(char *s) { int i; for(i=0;s[i]!='\0';i++); return i; } /*16进制转10进制函数*/ double tran(char *s) { int len=strlengh(s);/*求输入的字符串的长度*/ int ss[100] ;/*用于存放对字符的转换如f:15*/ int i; double n=0.0; /*对字符进行处理,将其每一位转换为整数,之后运算进行处理*/ for(i=0;i

进制十进制八进制十六进制转换练习题

进制十进制八进制十六进制转换练习题 TTA standardization office【TTA 5AB- TTAK 08- TTA 2C】

数制及相互转换 进制表示形式R代表任意进制 二进制 B R→十:按权展开求和二→八:三位变一位 八进制O (Q) 十→R:除R取余倒排二→十六:四位变一位 十进制 D 八→二:一位变三位 十六进制H 十六→二:一位变四位 一、单选题 1、下列数据中数值最小的是 A、01110000B B、249D C、125Q D、AAH 2、下列数据中数值最大的是 A、3FH B、64D C、77Q D、111110B 3、下列数据中数值最大的是 A、100H B、100D C、100Q D、100B 4、十进制数24转换成二进制数是 A、11100 B、11010 C、11000 D、10100 5、下列数据中数值最小的是 6、下列数据中数值最大的是 7、下列各数中最大的是 A、 B、D7 H C、214D D、325Q 8、与二进制数100101等值的十进制数是 A、34 B、35 C、36 D、37 9、与十进制数256等值的二进制数是 A、 1000000 B、 C、 D、

10、与十六进制数ACE等值的十进制数是 A、2766 B、 2765 C、2764 D、 2763 11、十六进制数111与八进制数111之和,用八进制数表示为 A、 310 B、 1222 C、 1000 D、 532 12、按某种进制运算2 × 4=12,那么4 × 5为 A、20 B、32 C、24 D、 12 13、若216是某种数制的一个数,它的值与十六进制数8E相等,则该数是()进制数。 A、六 B、八 C、九 D、十 14、下列各数中,属于合法的五进制数的是 A、216 B、 123 C、 354 D、189 15、下列无符号十进制中,能用8位二进制表示的是 A、 257 B、 288 C、 256 D、255 16、无符号二进制数后加上一个0,形成的数是原来的几倍 A、 1 B、 2 C、 1/2 D、4 17、下列数据中数值最大的是 A、(10000)2 B、(17)8 C、(17)10 D、(10)16 18、某学校有1500名学生,若用二进制来编学号,需要多少位来表示。 A、 10 B、 11 C、12 D、13 19、十进制数153转换成二进制数应为 A、 BC、 D、1110110

c语言 十六进制和十进制间的转换

1.将十六进制转换为十进制. #include #include int main(void){ int convert(int,char *); int i,j; char m[20]; printf("请输入你要转换的数:"); scanf("%s",m); i=0; while(*(m+i)!='\0'){ i++; } j=convert(--i,m); printf("转换为十进制是:%d\n",j); return 0; } int convert(int a,char *p){ int i,j,sum; sum=0; for(i=0;i<=a;i++){ if(*(p+i)<='f'&&*(p+i)>='a') j=(int)(*(p+i))-87; else if(*(p+i)<='F'&&*(p+i)>='A') j=(int)(*(p+i))-55; else j=(int)(*(p+i))-48; sum=sum+pow(16,a-i)*j; } return (sum); }

2.将十进制转换为十六进制. #include int main(void) { int i,a[20],m,m_old; char c; i=0; printf("请输入你要转换的数:"); scanf("%d",&m); m_old=m; while(m!=0){ a[i]=m%16; m/=16; i++; } i--; /*for(;i>=0;i--){ printf("%d ",*(a+i)); }*/ printf("%d转换为十六进制是:",m_old); for(;i>=0;i--){ /*switch(a[i]){ case(10):printf("A");break; case(11):printf("B");break; case(12):printf("C");break; case(13):printf("D");break; case(14):printf("E");break; case(15):printf("F");break; default: printf("%d",a[i]);

十进制数与十六进制数的转换方法28642.docx

一,十进制转换十六进制若十制数23785 十六制,用23785/16=1486 余 9, 1486/16=92 余?? 14, 92/16=5 余????. 12, 5/16=0倒写余????? .. 5ce9, 十制 5,十六制中, 23785=十六制 10 5ce9a、 11b、。。。。。。、 15 f ,再将余数 二,十六进制转换十进制 十六制数的第 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 从下向上倒序写就是果例如 302302/2 = 151余 0151/2 = 75余 175/2 = 37余 137/2 = 18余 1 18/2 = 9余 09/2 = 4余 14/2 = 2余 02/2 = 1余 01/2 = 0 余 1故二制 0 四,二进制转八进制 在把二制数八制表示形式,每三位二制位行分, 从小数点所在位置分向 左向右划分 , 若整数部分倍数不是 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) 例如:划分 1010 1011,根据表十六制AB

进制数与十六进制数的转换方法完整版

进制数与十六进制数的 转换方法 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

若十进制数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的,第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 故二进制为 二进制转 在把转换为表示形式时,对每三位二进制位进行分组,应该从小数点所在位置分别向左向右划分,若整数部分倍数不是3的倍数,可以在最高位前面补若干个0;对小数部分,当其位数不是的倍数时,在最后补若干个0.然后从左到右把每组的码依次写出,即得转换结果. 你算一下就知道了啊比如110=1*2^2+1*2^1+0*2^0=6 比如: 1001110分组001 001 110 001=0*2^2+0*2^1+1*2^0=1 001=0*2^2+0*2^1+1*2^0=1 110=1*2^2+1*2^1+0*2^0=6 结果为116 二进制转 要将二进制转为16进制,只需将二进制的位数由右向左每四位一个单位分隔,分的不够的前边补零,用四位数的来代表一个16进制。转换表如下,括号内为

十进制转十六进制

一:十进制数转换成二进制数。 随便拿出一个十进制数“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进制表达出来的一个数值,转换成八进制数十多少? 商余数步数

十进制数转换成十六进制

怎么把EXCEL表格里的一列里的十进制数转换成十六进制? DEC2HEX 将十进制数转换为十六进制数。 如果该函数不可用,并返回错误值#NAME?,请安装并加载“分析工具库”加载宏。 操作方法 在“工具”菜单上,单击“加载宏”。 在“可用加载宏”列表中,选中“分析工具库”框,再单击“确定”。 如果必要,请遵循安装程序中的指示。 语法 DEC2HEX(number,places) Number 待转换的十进制数。如果参数number 是负数,则省略places。函数DEC2HEX 返回10 位十六进制数(40 位二进制数),最高位为符号位,其余39 位是数字位。负数用二进制数的补码表示。 Places 所要使用的字符数,如果省略places,函数DEC2HEX 用能表示此数的最少字符来表示。当需要在返回的数值前置零时places 尤其有用。 说明: 如果number < -549、755、813、888 或者number > 549、755、813、887,则函数DEC2HEX 返回错误值#NUM!。 如果参数number 为非数值型,函数DEC2HEX 将返回错误值#VALUE!。 如果函数DEC2HEX 需要比places 指定的更多的位数,将返回错误值#NUM!。 如果places 不是整数,将截尾取整。 如果places 为非数值型,函数DEC2HEX 将返回错误值#VALUE!。 如果places 为负值,函数DEC2HEX 将返回错误值#NUM!。 示例 如果您将示例复制到空白工作表中,可能会更易于理解该示例。 操作方法 创建空白工作簿或工作表。 请在“帮助”主题中选取示例。不要选取行或列标题。 从帮助中选取示例。 按Ctrl+C。 在工作表中,选中单元格A1,再按Ctrl+V。 若要在查看结果和查看返回结果的公式之间切换,请按Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。 公式说明(结果) =DEC2HEX(100, 4) 将十进制数100 转换为4 个字符的十六进制数(0064) =DEC2HEX(-54) 将十进制数-54 转换为十六进制数(FFFFFFFFCA)

进制十进制八进制十六进制转换练习题

数制及相互转换 进制表示形式R代表任意进制 二进制 B R→十:按权展开求和二→八:三位变一位 八进制 O (Q) 十→R:除R取余倒排二→十六:四位变一位 十进制 D 八→二:一位变三位 十六进制 H 十六→二:一位变四位 1、下列数据中数值最小的是 A、01110000B B、249D C、125Q D、AAH 2、下列数据中数值最大的是 A、3FH B、64D C、77Q D、111110B 3、下列数据中数值最大的是 A、100H B、100D C、100Q D、100B 4、十进制数24转换成二进制数是 A、11100 B、11010 C、11000 D、10100 5、下列数据中数值最小的是 6、下列数据中数值最大的是 7、下列各数中最大的是 A、B、D7 H C、214D D、325Q 8、与二进制数100101等值的十进制数是 A、34 B、35 C、36 D、37 9、与十进制数256等值的二进制数是 A、1000000 B、 C、 D、 10、与十六进制数ACE等值的十进制数是 A、2766 B、2765 C、2764 D、2763 11、十六进制数111与八进制数111之和,用八进制数表示为 A、310 B、1222 C、1000 D、532 12、按某种进制运算2 × 4=12,那么4 × 5为 A、20 B、32 C、24 D、12 13、若216是某种数制的一个数,它的值与十六进制数8E相等,则该数是()进制数。 A、六 B、八 C、九 D、十 14、下列各数中,属于合法的五进制数的是 A、216 B、123 C、354 D、189 15、下列无符号十进制中,能用8位二进制表示的是 A、257 B、288 C、256 D、255 16、无符号二进制数后加上一个0,形成的数是原来的几倍?

十六进制转十进制设计

综合实验报告 实验名称:十六进制转十进制设计 学院:机械与汽车工程学院 专业:测控技术与仪器 班级:测控091班 姓名:张兵 学号:3090103124 时间2012.11.26—2012.12.7 指导教师:姚宏志

题目:利用51单片机实现2字节16进制数转换成10进制数实验 一、实验目的: 1、学习了解掌握A T89C51单片机的基本知识以及设计基本的单片机电路。 2、学习利用Altium Designer画PCB电路板并焊接电路。 3、学习利用仿真软件仿真电路。 4、学习掌握LED数码管的基本知识以及keilC51编程的相关知识。 二、实验器材: AT89C51单片机、74LS07芯片(2个)、引脚底座(14引脚2个、40引脚1个)、电容(2个)、排阻、四位一体数码管(1个)、晶振(12MHz)、开关3个、导线若干等。 三、实验说明 实验用到的元器件:51单片机、74LS07驱动器、八段共阴极LED、排阻等。元器件的工作原理及使用方法:首先来说明单片机的工作原理,我们本实验用到为单片机的最小系统,最小系统,一有时钟源,即晶振。二有复位电路。 时钟源提供单片机基准时钟信号,保证各指令的正常运行,复位电路则是用于复位还原。其次来说明74ls07,74ls07是集电极开路六正相高压驱动器,在这次我做的试验中是用它来给八段数码管提供电压进而驱动其工作。数码管此次用到的是八段共阴极的数码管,共a、b、c、e、f、g、dp,通过在P0口赋予不同的电平来控制相应的段位处于不同的状态(高电平点亮、低电平不亮)。 四、实验原理: 1、AT89C51单片机的资料: AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用A TMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。 1.1主要性能参数: ·与MCS-51产品指令系统完全兼容 ·4k字节可重擦写Flash闪速存储器 ·1000次擦写周期 ·全静态操作:0Hz-24MHz ·三级加密程序存储器 ·128×8字节内部RAM ·32个可编程I/O口线 ·2个16位定时/计数器 ·6个中断源 ·可编程串行UART通道 ·低功耗空闲和掉电模式

十进制转化十六进制

要把1610转换成16进制,采用什么方法好?为什么有的是先转换成2进制?具体方法和步骤怎么样? 我来帮他解答 2009-11-9 12:56 满意回答 直接转16进制: 1610/16=100……10(A); 100 /16= 6……4; 6 /16= 0……6; 故:1610(10)=64A(16). 先转2进制: 1610/2=805……0; 805 /2=402……1; 402 /2=201……0; 201 /2=100……1; 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. 1610(10)= 0110 0100 1010(2) 1610(10)= 64A(16) 2进制——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 修改中经常接触的是2、10和16进制,基本上需要了解的是2和16互转、10和16互转,其他多了解也没亏2转16:4个2进制位为一个16进制数,2进制1111为16进制F,2进制中千位的1=8,百位的1=4,十位的1=2,个位的1=1,将各个位的数作相应转换再相加,的到的数就是10进制数0-15,可轻松转换成16进制。如01011100,可看成是两组2进制数0101和1100,则这个数就是16进制的5C。10转16:100以内一点的10转16心算比较快,复杂的用“计算器”算了。10转16用传统的计算方式可以了,就是大于15小于256的10进制数除以16为的值为十位的16进制数,其余数为个位的16进制数,没余数则个位为0。如61的16进制是3D,61除以16得3余13,3作十位数,13转成D为各位数。字串1 16转10:用相反的道理,将十位数乘以16加上个位数。如5A,将5乘以16得80,加上A的10进制10,结果是90。字串2 其实这些都是计算机基础,基本上学过计算机的都会学到这些,但留意一下,他们对于修改是十分有用的,平时多多留意,多多试验,你也会成为修改高手。字串4 个人推荐使用:WINDOWS中点击“开始”--”程序“--“附件”--“计算器”,按“查看”再选“科学型”,就可以方便的进行各进制的转换了(如:你要转换10进制90000000为16进制,点“十进制”,输入90000000,再点一下“16进制”,就会看到55D4A80,转换就完成了。其他同理)。字串7 二进制、八进制、十六进制字串3这是一节“前不着村后不着店”的课。不同进制之间的转换纯粹是数学上的计算。不过,你不必担心会有么复杂,无非是乘或除的计算。字串8生活中其实很多地方的计数方法都多少有点不同进制的影子。字串1比如我们最常用的10进制,其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况,我想我们现在一定是在使用20进制。字串1至于二进制……没有袜子称为0只袜子,有一只袜子称为1只袜子,但若有两袜子,则我们常说的是:1双袜子。字串9生活中还有:七进制,比如星期。十六进制,比如小时或“一打”,六十进制,比如分钟或角度…… 字串7 字串3 6.1 为什么需要八进制和十六进制?字串5 编程中,我们常用的还是10进制……必竟C/C++是高级语言。字串2 比如:字串8 int a = 100,b = 99; 字串7不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。字串1但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:字串5 0000 0000 0000 0000 0110 0100 字串1 面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。字串4字串8 用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢?字串4 2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。在下面的关于进制转换的课程中,你可以发现这一点。字串9 字串4 6.2 二、八、十六进制数转换到十进制数6.2.1 二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 字串2 所以,设有一个二进制数:0110 0100,转换为10进制为:字串5 下面是竖式:字串5字串9 0110 0100 换算成十进制字串3 字串5第0位0 * 20 = 0 字串5第1位0 * 21 = 0 字串7第2位 1 * 22 = 4 字串1第3位0 * 23 = 0 字串7 第4位0 * 24 = 0 字串4第5位1 * 25 = 32 字串1 第6位1 * 26 = 64 字串6第7位0 * 27 = 0 +

(16进制数据转换成10进制)HexToDecimal

package ; import ; public class MainEntry { public static void main(String[] args) { // 初始化16进制数据键值对 HashMap hmI2C = new HashMap(); HashMap hmC2I = new HashMap(); for(int i = 0; i < 10; i++) { hmI2C.put(i, (char) ('0'+i)); hmC2I.put((char) ('0'+i), i); } for(int i = 0; i < 6; i++) { hmI2C.put(10+i, (char) ('A'+i)); hmC2I.put((char) ('A'+i), 10+i); } // 调用功能接口 hexToDecimal("ECABFFFED1234D7897685DC", hmI2C, hmC2I); } /** * 实现功能函数 */ private static void hexToDecimal(String hexString, HashMap hmI2C, HashMap hmC2I) { String result = "0"; // 初始化结果值 for(int i = 0; i < hexString.length()-1 ; i++) { if (i == 0) { result = additional((hmC2I.get(hexString.charAt(i))). toString(),

16进制转换算成10进制程序

STC 单片机中的eeprom写入和读取6位的10进制数需要进行数据类型转换吗?具体是怎样现的呢? 2013-06-04 10:24 满意回答 提问者采纳 2013-06-04 10:27 6位10进制数,转换为16进制,再写入EEPROM. long x; 分4个字节写入 uchar c1; c1= x>>24; //最高字节 c1=x>>16; //次高字节 c1=x>>8; //次低字节 c1=x&0xff; //最低字节 分别写入就可以了。追问我用的是stc12C5A60S2单片机,我将转化轩16进制的数保存在一个数组,然后整个数组写进去,当需要的时候再读出来还原成十进制数可否呢?回答当然可以。追问想了一下,不知应该如何用单片机C语言去实现啊,可以指导下不?提问者评价谢谢哈评论 | ningling_21 知道达人 | 来自团队单片机学习 | 十级采纳率26%擅长:其他编程语言汇编语言 C/C++

16进制转换算成10进制程序 来源:本站整理作者:佚名2009年01月14日 23:33 分享 [导读] 16进制转换算成10进制程序 unsigned char d[10]; //用于显示的10位显示缓存 //====================== 关键词:进制 16进制转换算成10进制程序 unsigned char d[10]; //用于显示的10位显示缓存 //============================================== ========== //16进制to10进制输出子程序:显示数据,起始位,结束位,有无小数点 //============================================== ========== void output(unsigned long dd,unsigned char s,unsigned char e,unsigned char dip) { unsigned long div; unsigned char tm[8],i,j; div=10000000; for (i=0;i<8;i++) { tm[i]=dd/div; dd%=div; div/=10; } for (i=0;i<6;i++) { if (tm[i]!=0) break; tm[i]=nul; } tm[5]|=dip; //小数点控制,请看“串行LED数码管显示驱动程序” j=7; for (i=s;i

相关文档
相关文档 最新文档