数制转换

2024-10-18

数制转换(共3篇)

数制转换 篇1

在每年的全国青少年信息学奥林匹克联赛初赛试题中, 都有数制之间的相互转换的一道单项选择题和一道不定项选择题。要做好这样的题目, 正确地进行各进制数之间的相互转换是关键。那么怎样正确地实现各进制数制之间的相互转换呢?

在进位计数制中有基数、数位和位权三个要素。基数是指在某种进位计数制中, 每个数位上所能使用的数码的个数。如:十六进制数基数是16。数位是指数码在一个数中所处的位置。一个数字在数的不同位置出现代表的数值不同。对于多位数, 处在某一位上的“1”所表示的数值的大小, 称为该位的位权。一般情况下, 对于N进制数, 整数部分第i位的位权为Ni-1;而小数部分第j位的位权为N-j。例如:二进制第二位的位权为22-1=2, 第三位的位权为23-1=4。

用任何一种数制表示的数都可以写成一个按权展开的多项式的和。

例1: (935.54) 10=9×102+3×101+5×100+5×10-1+4×10-2 (F7.A4) 16=15×161+7×160+10×16-1+4×16-2

在信息学奥赛题中, 通常考察的进制数有二、八、十、十六进制数。这些进制数之间的相互转换总共有4P2=4×3=12种可能, 下面我们谈一谈这四种进制数之间的相互转换。

1、十进制数→二、八、十六进制数 (3种)

转换规则:整数部分转换采用“除基取余”法, 即转换中除以基数 (2、8或16) 取余数, 直到商为0, 最后得到的余数倒序读出, 即为结果。小数部分转换采用“乘基取整”法, 即转换中采用乘基数 (2、8或16) 取整数, 直到小数部分的位数达到所要求的精度时为止。

例2:十进制数100.625等值于二进制数 () 。 (第十届第6小题)

A.1001100.101 B.1100100.101 C.1100100.011

D.1001100.11 E.1001100.01

解:十进制数100.625的整数100转换为二进制的计算结果为 (100) 10= (1100100) 2

十进制数100.625的小数0.625转换为二进制数的计算结果为 (0.625) 10= (0.101) 2

然后再将整数部分与小数部分相加, 结果为 (100.625) 10= (1100100.101) 2

所以答案为B。

2、二、八、十六进制数转换成十进制数 (3种)

将二、八、十六进制数转换成十进制数, 把各个非十进制数按权展开求和即可。如把二进制数 (或八进制数或十六进制数) 写成2 (或8或16) 的各次幂之和的形式, 然后再计算其结果。

例3: (32CF.4B) 16=3×163+2×162+×C×161+F×160+4×16-1+B×16-2=12288+512+192+15+0.25+0.04296875= (13007.29296875) 10

3、二进制数与八、十六进制数之间的相互转换 (4种)

(1) 二进制数转换成八进制数、十六进制数

由于二进制数和八进制数、十六进制数之间存在特殊的关系, 即23=8, 24=16, 因此, 转换方法比较容易, 具体转换方法是:将二进制数从小数点开始, 整数部分从右向左3位、4位一组, 小数部分从左向右3位、4位一组, 不足3位、4位用0补足即可。将每一组3位数、4位数转换成一位八进制数、十六进制数, 依次写出来即为结果。

例4:将 (1011011.00101011) 2转换成八进制数。

(2) 八进制数、十六进制数转换成二进制数

方法:以小数点为界, 向左或向右每一位八进制数、十六制数用相应的3位、4位二进数取代, 然后将其连在一起即可。

例5:把 (3D7.A6) 16转换成二进制数。

4、八进制数与十六进制数之间的相互转换 (2种)

(1) 八进制数转换成十六进制数方法有两种:

①八进制数→十进制数 (除16取余) →十六进制数

②八进制数→二进制数 (每4位二进制数转换成1位十六进制数) →十六进制数

(2) 十六进制数→八进制数方法也有两种, 也是以十进制数或者二进制数为桥梁转换而成的。

①十六进制数→十进制数 (除8取余) →八进制数

②十六进制数 (每1位十六进制数转换成4位二进制数) →二进制数 (每3位二进制数转换成1位八进制数) →八进制数

通过以上的学习, 二、八、十、十六进制数之间的相互转换就没什么困难了。信息学奥赛的初赛的一个单选题和一个不定项选择题就会准确无误地选择出来。

例6: (2010) 16+ (32) 8的结果是 () 。 (第十二届12小题)

A. (8234) 10 B. (202A) 16 C. (1000000000110) 2D. (2042) 16

解: (2010) 16= (10000000010000) 2= (20020) 8= (8208) 10 (32) 8= (11010) 2= (26) 10= (1A) 16

此小题的结果即可以转换成二、八、十、十六进制的数 (2010) 16+ (32) 8= (2010) 16+ (1A) 16= (202A) 16 (2010) 16+ (32) 8= (8208) 10+ (26) 10= (8234) 10 (2010) 16+ (32) 8= (20020) 8+ (32) 8= (20052) 8 (2010) 16+ (32) 8= (10000000010000) 2+ (11010) 2= (10000000101010) 2

所以此小题的正确答案为A和B。

电子看板中数制转换算法研究 篇2

当工业生产领域中将来自底层自动化系统的数据或信息当作公共信息发布的需求产生时,往往也采用LED平板显示设备,并将该设备直接同控制系统(SCADA/DCS系统)或计算机制造系统(CIMS系统)集成起来,形成电子看板[2]。在离散制造工业中,电子看板常用于更新产量、成品率及合格率等参数,达到以实施协调生产、优化工序及提高效率等为目标的看板管理[3]。陆泽勇报道了一种用在汽车冲压厂物流系统上的拉动式生产看板系统,用于实现生产线上的准时化生产[4];纪寿文等报道了一种应用在机加工行业的电子看板系统,用于优化零部件供应管理[5]。在流程工业中,LED平板显示设备往往作为仪表的面板与之结合成一个整体,而作为电子看板与底层自动化系统结合的报道并不多见,曾荣杰报道了将240×128单色LED点阵用于发布选矿厂在线分析仪的测量结果[6];石长华和黄新华报道了将16×64双色LED点阵用于发布在陶瓷烧窑炉内和炉旁测得的温度参数信息[7]。钢铁冶炼行业属于典型的流程工业,炼铁和炼钢厂的副产品“冶金副产煤气”是钢铁行业广泛使用的二次能源[8],为合理利用副产煤气,减少管网运行压力波动和煤气放散引发的能源消耗和环境污染,钢铁联合生产企业通常针对副产煤气系统,建立覆盖全厂的煤气调度中心,并围绕煤气储柜、煤气管网等基础设施,在厂区建立多个调度室。监控中心设置底层自动化系统,调度室设置与调度中心系统互联的信息发布系统,形成分级调度系统,使班组操作人员及时了解诸如产气源发生量、煤气用户消耗量、气柜高度(煤气储量)、管网压力、用户支管压力及总管煤气一氧化碳含量等反映煤气系统运行状态的参数值,从而实施相应的调度或调节操作。针对煤气系统的运维,需要建设一套电子看板系统与底层自动化系统结合在一起,将取自底层自动化系统的参数信息在不同调度室中通过电子看板同步发布出来,其中信息发布终端的低成本技术方案就是选用LED平板显示设备,然而从过程自动化系统角度看,LED平板显示设备属于第三方设备,该种信息发布设备与自动化系统存在兼容性问题[9]。笔者针对国内某钢厂在煤气加压站厂区调度室建设电子看板系统过程中出现的采集自集散控制系统的生产工况参数不能在LED平板显示设备上发布的问题,展开数制转换算法研究,并在连接LED平板显示设备和集散控制系统的可编程终端设备上实现该算法,使得采集自底层自动化系统的参数值能在LED平板显示设备上发布,实现煤气储柜管网等基础设施的看板管理。

1 背景介绍

国内某钢厂煤气加压站建设了一套监控高炉煤气储柜、转炉煤气储柜与加压站运行的过程自动化系统,系统的组成和结构如图1所示。该系统设置两个控制站用于监控高炉煤气储柜、转炉煤气储柜和加压站。安装在设施上的变送器和执行机构通过远程IO站接入控制系统,IO站通过Profibus总线接入本地控制站,两个本地控制站通过Profinet工业以太网和上位监控计算机连接。系统中硬件采用了S7-200系列的产品,软件选用Win CC产品。在原控制系统投运后,该企业出于对班组操作人员和管理人员公布运行过程中煤气系统状态参数以方便实施看板管理的需求,建设了一个基于LED平板显示设备的看板系统,用于发布高炉煤气储柜柜位、转炉煤气储柜位、储柜回收量、煤气管网的总管压力和各用户支管压力、各用户煤气使用量及总管放散塔放散量等参数的实时值,并将看板系统部署在下设的一个现场调度室中。

基于对所搭建的生产看板系统与原自动化系统的集成需要,看板系统选择S7-200系列的可编程逻辑控制器作为子站,从技术层面分析,选型的依据是:

a.S7-200提供自由口通信模式[10],其特点是除物理层外其余协议层由用户编程实现;

b.S7-200的串口波特率可组态,可使系统中控制器与信息发布设备之间的串口波特率相匹配;

c.S7-200支持Profinet工业以太网通信,可实现控制器与原控制系统的集成。

看板系统的终端选择了双色LED显示屏,并选用某厂家提供的图文控制卡驱动该设备。系统硬件选型确定后,通过在S7-200控制器的变量寄存器中编程,实现将LED屏驱动卡的分层协议模型在S7-200控制器中的压栈处理,使得系统子站自由口通信模式下的通信协议与驱动卡的通信协议完全一致,如图2所示。

2 问题的提出与分析

在S7-200子站自由口上编程虽然实现了LED信息发布设备协议的压栈处理,使得生产线看板系统中信息源和信息发布设备以完全一致的协议进行数据交互。但煤气系统基础设施运行时的各状态参数信息发布仍存在问题———参数的数值无法直接传送到LED显示屏上显示。

生产线看板系统在LED显示屏上所要发布的信息分为固定信息和可变信息两类。固定信息是在LED屏上显示出来的参数名称和单位;可变信息是参数的数值,它是随时间变动的数字。如:“高炉煤气柜位:”“数值”“m3”、“转炉煤气柜位:”“数值”“m3”、“高炉煤气回收量:”“数值”“m3”、“转炉煤气回收量:”“数值”“m3”、“总管压力:”“数值”“m3”及“燃气机组煤气消耗量:”“数值”“m3”等,仅有“数值”为可变信息,其余均为固定信息。

需要在LED显示屏上同时显示固定信息和可变信息,才能使集成到原控制系统的生产线看板系统的功能得以实现。LED信息发布设备使用ASCII码和区位码表示的字母、数字和汉字编码驱动点阵,显示编码所对应的字符、字母与数字用ASCII码编码,汉字用区位码(信息交换用汉字编码字符集)编码。可变信息无法直接传送到LED显示屏上显示这一问题,是由ASCII码表示数字的特点所决定的。ASCII码表中用0x30、0x31、0x32、0x33、0x34、0x35、0x36、0x37、0x38、0x39编码十进制数字的10个数码0、1、2、3、4、5、6、7、8、9[11]。对于大于10的整数没有对应的编码,为了实现数字的ASCII码编码,需要将数字按权展开,具体如下:

其中,系数kn,kn-1,kn-2,…,k1,k0取值为9、8、7、6、5、4、3、2、1、0。

展示中系数的ASCII码见表1。

注:0x表示后面的数字是十六进制;*前的字母a、b、c、d依系数的实际值取0、1、2、3、4、5、6、7、8、9。

将不同权位的系数提取出来按ASCII码编码,再按表1第二列中的值0x3d…0x3c 0x3b0x3a排序,就能将十进制数表示为非进位计数制,实现用ASCII码表示数字的目的。值大于10的数字的ASCII编码原理表明:当LED信息发布设备接收十进制数字信息时,设备并非将信息当作数字对待,而是当作独立的按顺序排列的字符对待。以数字(17350)10为例:人或控制器对该值的理解是“一万七千三百五十”或“100001111000110”,信息发布设备对该值的理解是“1”、“7”、“3”、“5”、“0”这5个字符组成的一串码,即0x31 0x37 0x33 0x35 0x30。

3 数制转换算法的数学模型

上述分析表明,应设计一种数制转换算法将进位计数制数字转换成非进位计数制数字[12],将非进位计数制数字不同权位上提出的系数按序排列转换成ASCII码发送给LED数字看板,才能实现可变类型信息的显示。将采集自集散控制系统的可变信息用下式表示:

其中10n,10n-1,10n-2,…,101,100是从最高位至最低位各位置上的权值;kn,kn-1,kn-2,…,k1,k0是给定位置上权值对应的系数。

系数kn的提取按下式:

其中[]表示截尾运算,以下公式中出现的[]均为截尾运算符。

系数kn-1的提取按以下两个公式:

系数kn-2的提取按以下两个公式:

以相同的运算规则构造递推表达式逐位提取系数,直到提取系数k1。系数k1的提取按以下两个公式:

系数k0的提取按下式:

k0=(k1k0)10-k110(10)

式(3)~(10)的递推公式,描述了实现将进位计数制数字转换为非进位计数制数字算法的数学模型。递推公式能提取各权值对应的系数。LED信息发布设备发布数字信息时,顺序接收系数kn,kn-1,kn-2,…,k1,k0对应的ASCII码序列,就能按排列顺序显示系数。

4 算法设计

数制转换算法的设计是在控制器变量寄存器中分配适当的存储空间,根据具体数字消息的位数,按式(3)~(10)递推公式的构造方法构造对应的递推公式,按SIMATIC软硬件平台的编程规则用代码实现。以“高炉煤气储柜柜位”值和“转炉煤气储柜柜位”值,这类生产线看板系统中所要显示的最大数字为例说明:由于两个储柜的柜位值是万位数字,因此递推公式中n值取4,构造含9个表达式的递推公式,设计算法将递推公式在控制器中实现,以看板系统控制器的选型为例,算法设计流程如图3所示。

算法用一个子例程实现,流程被设计成顺序结构,这是由递推公式的执行顺序所决定的。由于n取值为4,因此该顺序流程由15步运算组成,主要由前12步实现式(3)~(10)递推公式的运算,后3步调用系统函数实现转换与赋值。前12步中,每执行一步运算指令,中间结果都会存入一个预分配的16位存储区。16位存储区的功能划分如图4所示。

图4反映出在算法设计的过程中,控制器的变量存储器中分配了3组16位存储空间(也称为变量字)。按递推公式执行运算的结果———原进位计数制数字中各位上的系数被设计为存放在变量1~5的5个16位存储区中;运算中需要将每位权值与该位权值对应的系数相乘,因此分配变量10~13的4个位存储区用于存储乘法运算的结果;运算中需要以递推方式连续执行4次减法运算,第四次减法运算提取最低位系数作为结果存入变量5,因此分配3个连续的16位存储区用于存储减法运算的结果。

5 结束语

笔者对以LED平板显示设备为生产看板的数制转换问题进行分析,针对ASCII码表示数字的特点,建立了数学模型,将进位计数制数字转换为非进位计数制数字,并针对具体的系统环境和硬件平台对数制转换算法进行设计,实现了生产看板系统中可变类型信息在LED数字看板上的发布。

参考文献

[1]黄春霞.浅谈我国LED显示屏发展历程和应用领域[J].科技致富向导,2011,(26):145.

[2]周天宇,鲍敏,章近达.基于TOC与OEE的生产电子看板系统[J].机电工程,2015,32(4):497~500.

[3]洪旭东,徐克林,夏天.基于看板的生产线物料循环配送方式[J].工业工程,2009,12(4):116~120.

[4]陆泽勇.冲压生产的电子看板物流系统[J].物流技术,2005,(3):70~71.

[5]纪寿文,缪立新,李克强,等.一种生产物流电子看板系统的设计[J].机械制造,2004,42(1):33~35.

[6]曾荣杰.超大LED显示屏在工业中的应用与研究[J].矿冶,1995,4(2):85~92.

[7]石长华,黄新华.陶瓷窑炉无线温度检测及LED点阵显示系统设计[J].陶瓷学报,2012,33(4):508~512.

[8]聂秋平,吴敏,曹卫华,等.一种基于消耗预测的钢铁企业煤气平衡与数据校正方法[J].化工自动化及仪表,2010,37(2):14~18.

[9]霍兴旺,岑娜.PLC自由口和单片机通信在LED显示中的应用[J].可编程控制器与工厂自动化,2011,(12):40~42.

[10]李秀芹,杜向阳.VB与PLC自由口通信模式在断路器测试系统的应用[J].化工自动化及仪表,2015,42(2):195~199.

[11]谭浩强,崔武子.C语言程序设计基础版[M].北京:华夏出版社,2005.

关于数制转换的几点教学体会 篇3

数制转换作为计算机教学的基础内容,在整个计算机教学中占据着十分重要的位置。因此,在具体的计算机教学中如何深入透彻地向学员讲解数制转换就显得尤为重要。在笔者多年的具体教学过程中,对数制转换的教学有自己的独特体悟,在此将这些经验呈现出来与大家共享,以期能够为更好地开展数制转换教学提供必要的参考。在数制转换的教学中,首先要解决的问题就是向学员讲解清楚二进制编码的相关情况。作为计算机普遍采用的二进制编码有其独特的优势所在:二进制码较之其他数制码更易实现;二进制码在编码、计数以及加减运算规则方面也极为简便;二进制码只有两个最为基本的符号“1”和“0”组成,而这种组成与逻辑命题的“是”和“否”或者是“真”和“假”相对应,这也为计算机实现逻辑运算和判断创造了条件。

1 概念清楚,讲清本质

要深入透彻地讲解好数制转换的问题,就必须对有关数制转换的相关知识有一个明确的认识。这也就是说要把进制的概念弄清楚,进而讲清数制转换的本质。我们常说的进制也就是进位制,是人们规定的一种进位方法。对于任何一种进制,诸如X进制,就表示某一位置上的数运算时是逢X进一位。基础数学运算中经常使用的十进制就是逢十进一,以此类推十二进制就是逢十二进一,而十六进制则是逢十六进一,因此计算机中采用的二进制也就是逢二进一。计算机是信息处理的工具,任何信息必须转换成二进制形式数据后才能由计算机进行处理、存储和传输。虽然进制存在着种种的不同,但是就其本质而言,不同进制的数学符号所表示的数仅仅是一种外在的形式,具体到数本身来讲则是相等。比如60这么个数字,我们可以分别表示为2×30、3×20等,在这里60始终是一个确定的数字,而30、20我们就可将之视为不同的进制。

2 共性、公式表示由繁化简

就各种进制而言,虽然存在着很大的不同,但是它们之间也存在着许多的相同之处。首先,每个数制都有其固定的符号集:如二进制数制就有0和1两个基本符号,而七进制数制所包含的符号则是0到6,十进制数制则为0到9,十六进制数制由十六个字符0~9以及A,B,C,D,E,F组成。其次,每种进制都可以使用位置表示法,也就是不同位置的数符由于其所处位置的权值不同,从而导致所代表的数值也不同。例如:十进制数5555.555可表示为:555.555=5×103+5×102+5×101+5×100+5×10-1+5×10-2+5×10-3,可以看出,各种进位计数制中的权的值恰好是基数的某次幂。因此,对任何一种进位计数制表示的数都可以写出按其权展开的多项式之和,任意一个r进制数N可以表示为。公式中的Di为该数制采用的基本数符,ri是权,r是基数,不同的基数,表示不同的进制数。

由上可见,进制之间存在着很大的共性。这些共性的存在也就为进制公式表示的由繁化简创造了条件。

3 举例分析、总结规律

在具体教学中,数制转换是一大难点。因此,我们在教学中就非常有必要对不同进制之间的转换进行细致的分析,进而找出其中共同之处,总结出带有普遍性的规律。就定义而言,进制转换是人们利用符号来计数的方法,包含很多种数字转换。进制转换由一组数码符号和两个基本因素(“基”与“权”)构成。下面我们以二进制转换为十进制为例来简要介绍数制之间的转换原则与方法。将二进制数转换为十进制数的大致方法如下:二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:0110 0100,转换为10进制为100。

下面是竖式:

0110 0100换算成十进制(“^”为次方)

第0位0*2^0=0

第1位0*2^1=0

第2位1*2^2=4

第3位0*2^3=0

第4位0*2^4=0

第5位1*2^5=32

第6位1*2^6=64

第7位0*2^7=0+

---------------------------

100

用横式计算为:0*2^0+0*2^1+1*2^2+0*2^3+0*2^4+1*2^5+1*2^6+0*2^7=100

0乘以多少都是0,所以我们也可以直接跳过值为0的位:

1*2^2+1*2^5+1*2^6=100

与此类转换原则与方法大致相同,其他数制转换如:八进制、十六进制转化为十进制也都可以依此进行相应的转换。也即是根据数值所处的位置,按照权值对其进行相应的展开,在进行相加求和,就可以得到要转换的结果了。

4 总结归纳,简洁明了

总结数制转换的基本原则和方法,我们可以发现如下带有规律性的东西:(1)r进制转换为十进制。根据r进制数的指数表达形式,将r进制数按权值展开,再将它们按照十进制的运算法则计算、求和。就可以得到对应的十进制数。(2)十进制转换成r进制。如果要将一个十进制数转换成r进制数,对于整数部分采用的方法是对十进制数进行“除r取余,自下而上“,对于小数部分采用的方法是对十进制数进行”乘r取整,自上而下“的方法来表示这一相同的大小的数值。(3)r进制之间的相互转换。二进制、八进制、十六进制之间的相互转换,最重要的在于分组、展开。而且再必要时候前后补零,使他们数值的位数不缺。而且,由于位数多,因此,在具体运算时,要仔细、认真。

5 总结

总之,进制之间的转换只有在掌握其运算的本质、方法的基础上,在做题的时候仔细、认真一些就可以了。

参考文献

[1]李行,马珊,周文灵编著.计算机应用基础教程.电子工业出版社,2001.5.

[2]杨振山,龚沛曾.计算机文化基础.高等教育出版社,1998.12.

[3]王津,李培金,董少明,梅创社主编.计算机应用基础(第2版)西安交通大学出版社,2001.8.

上一篇:现代循环农业下一篇:预测模拟软件