电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

二进制与十进制转化

来源:火烈鸟作者:开心麻花2025-11-191

二进制与十进制转化(精选9篇)

二进制与十进制转化 第1篇

初中信息技术考试有对数制的考核,要求学生理解计算机运算的基础“二进制”,并要求学生能够熟练地将二进制与十进制的数进行转化。这部分内容对学生们来说是一个比较难理解的问题。学生们熟悉十进制的计算法则和思维,但对二进制的“逢二进一”的思想和思维方式不是很理解。鉴于这种情况,我在教授这部分内容的时候,就戴上事先准备好的酋长帽,扮演部落首领,创设了一个原始部落的情境:在远古时代,人们还不会说话,不会写字,不会种田,主要以打猎为生,每一个人打完猎物回来之后都要将猎物统一交到部落首领的手里,部落首领根据每一个人所得猎物的多少进行奖励。刚开始,人们打猎水平不是很高,只能打到1只猎物,2只物、3只猎物这样猎手们就在部落首领的面前伸出一个手指头、两个手指头、三个手指头这样的生活过了很久。有一天,有一个猎手打了11只猎物,那这个猎手怎么才能向部落首领汇报自己的战果呢?我将这个问题留给了学生。有的学生说先伸一个手指头,再伸出一个手指头;也有学生说找一个人,先数到10,然后让这个人伸出一个手指头,这样这一个手指头就可以当成是10只猎物,自己再伸出一个手指头,这样就可以表示1个“十”和1个“一”了。这正是十进制计数法的精髓所在,也正是我要引出来的话题:“满十进一”。紧接着我利用十进制的计数法则,向学生们介绍了数码、基数和位权的概念,让学生们理解数码就是数制中表示基本数值大小的不同数字符号。例如,十进制中的0、1、2、3、4、5、6、7、8、9十个数码,并告诉学生,十进制中没有哪一个单独的数码可以表示“十”,为后面的二进制数中没有哪一个数码可以表示“二”做铺垫。而基数则是数制所使用数码的个数。例如,十进制的基数为10。基数也是数据满向前进位的标尺。位权则是数制中某一位上的数所表示的数值,即所处位置的价值,是基数的整数次方。例如,十进制的123, 1的位权是102, 2的位权是101, 3的位权是100。并通过对十进制的科学计数法的展开表示这个数的大小。如上例中的123=1102+2101+3100。

我又安排了几组练习,当学生们对数制的三要素有了比较深刻的理解之后,我把他们重新带到了那个不能说话只能用手势表达的远古时代,只是这时候我要求他们不能用手指,而只能用拳头表示数。模仿十进制数的三要素,我让学生们说出了二进制中的数码为0、1,基数为2,位权为20、21、22、23当我说打到1只猎物,学生们就伸出一个拳头;我说打到2只猎物,有学生们就本能地伸出两个拳头,当即就有学生说不对,因为二进制中只能有0, 1这两个数码。学生们就模仿十进制进位的思想找了一个人,让这个人举起手来表示2。这样二进制“逢二进一”的思想就被学生们接受了。

看到他们一个个得到新知兴奋的样子,我也很高兴,但我知道,这只是刚刚迈出了一小步,我要乘胜追击,因为后面还有二进制与十进制的相互转化。为了给进制转化做铺垫,我模仿十进制科学计数法的表示方法,将二进制数据展开,如101=122+021+120,并对学生进行了几组强化训练。因为有十进制的那种展开方式,学生们练习得还算顺利。然后我将学生做的展开训练进行了计算,如:101=122+021+120=14+02+11=4+0+1=5,学生们豁然开朗:这就是二进制到十进制的转化。不用我说,学生们就将刚才做的展开计算练习全部换算为了十进制数。

二进制与十进制的转换 第2篇

短除法,每次除以2并写出每次余数,然后从下往上写出结果。如:173(10)=10101101(2)

6(10)=110(2)如果是小数转换:每次乘2取整数

2、二进制换十进制:从个位起分别乘2的n次方n-1次方。。2次方1次方0次方,并分别相加.如110110(2)=1*2的5次方+1*2的4次方+0*2的3次方+1*2的2次方+1*2的1次方+0*2的0次方=32+16+0+4+2+0=54 3、9取3的不同个数:9*8*7/3*2*1=84种

二进制与十进制转化 第3篇

王小川先讲了一个故事,某著名汽车公司希望在车里内置搜狗输入法,但双方的开发节奏实在是不合拍2008年签的协议,最终要在2010年下线出厂的车里面安装。

王小川说,这是让我很崩溃的一件事情,从此就对与汽车公司合作有心理阴影了。他希望能通过出色的互联网服务,倒逼汽车公司加快改变,主动找互联网公司合作。

现在谈到汽车公司如何在互联网时代生存,总会谈到电子技术、互联网服务快速迭代的挑战。但其实这只是这两类公司之间巨大差异的一个具体表现。本质在于汽车公司和互联网公司,有着完全不同的产品开发理念。

从李书福对智能汽车的理解中,你就能感受到这种理念的差异。

而在对话中,还是看得出来李书福有着很强的危机意识和自我革命的态度。他认为王小川的倒逼理论,就是互联网公司要革汽车公司的命。李书福说:“倒逼可以把人逼死、把企业逼垮,其实就是革命,只不过是个不一样的表达方式。”

当年一句“汽车就是四个轮子加一个沙发”让李书福闻名天下。在这场争论中,他是这么描述未来的汽车:一定是四个轮子加一台计算机,然后加上一大堆电池。

随后李书福谈了很多发动机小排量化、电驱动化和自动驾驶智能化的趋势。他认为未来的汽车将会由电脑接管,减少人为影响因素,从而实现真正高效和安全,即所谓的智能汽车。

对李书福来说,无人驾驶技术需要互联网,但不依赖互联网,最重要的是汽车中的电脑拥有应对各种复杂路况的能力,它自身足够聪明。

李书福对智能汽车的分析,其目标是让每一辆汽车变成一个超级电脑。这跟互联网或者说互联网思维没有多大的关系。其实,这个思路代表了很多汽车公司的真实想法。你会看到沃尔沃、奥迪、奔驰、福特等很多公司都在努力开发自动驾驶、无人驾驶技术。

他们竭尽全力把汽车的硬件性能提升到极致,认为这就是与科技公司、互联网公司对抗的方法。

这样的产品开发理念有两个特点。第一,召集大批工程师为某个大项目集中开发,通常用几年时间发布一次产品;第二,除了一些小规模用户调研外,主要由公司高管和少数工程师定义产品的功能和体验。

而互联网公司的产品开发理念则是,第一,以用户体验为中心,尽可能把用户行为数据化,然后根据分析用户数据来决定如何定义产品功能和体验;第二,根据用户的行为数据,快速迭代产品,不断寻找用户需求痛点去解决。

之前在科技行业,传统科技公司与互联网公司在产品开发模式上,就曾经发生过类似的碰撞。就像微软会耗费几年时间开发出新版本的Windows,而谷歌则随时修改自己搜索引擎的代码,优化自己的搜索结果,提高用户体验。

当然,由于汽车产品的复杂程度,其开发模式与互联网产品的开发模式融合到什么程度,这里还有不少争论。但仅把互联网公司进入汽车行业的威胁,理解为尖端技术的竞争,是有一些误解的。

就像王小川所说的那样,互联网并不是代表着智能化、自动化的尖端技术。这并不是科技公司,或者互联网公司的优势所在。

很多互联网公司并不代表技术至高无上的堡垒,他们的竞争力在于利用内部、外部的技术体系,打造出色的用户体验。

所以说,汽车公司对 Tesla 现象的讨论,如果仅仅停留在纯电动技术层面,也是不够的。Tesla 代表的是一种产品开发理念。

易到用车创始人周航在论坛上就说:“我觉得Tesla 的魅力一半在电动,还有一半在于实时在线的架构和体验。”

汽车公司与互联网公司之间的竞争,并非尖端技术的比拼,而是两种产品开发理念和工作方式的竞争。

像 Tesla 和谷歌这样的公司,正在努力理解、吸收汽车行业的产品开发模式。有没有能力调整自己传统的模式,来适应全新的时代,这点对传统汽车公司而言至关重要。

二进制与十进制转化 第4篇

关键词:十进制,进制转换,任意精度

0 引言

进位制是一种计数的方法, 采用有限的数字符号来代表所有的数值, 同一个数, 可用采用不同的进位制来表示。在进制中, 可用数字符号的数目称为基数, 根据基数n的多少, 我们将其称为n进制。常见的进制有十进制、二进制、八进制、十六进制等。人们在日常生活中常用的是十进制;在计算机中, 数据的存储、传输和处理多采用二进制来表示;在程序中也常用到八进制和十六进制来表示数, 这就涉及到进制之间的转换。

Windows操作系统自带的计算器小程序可以实现常见进制之间的相互转换, 但是只能对整数进行转换, 不可以对小数进行转换, 不具备对指定精度的小数进行数制转换的功能。

而文本中提出的算法实现了十进制与N进制之间的转换, 不但可以转换整数, 还可以转换任意精度的小数, 并且可以根据要转换的数值的精度给出相应精度的结果。

1十进制转换为N进制

在实现将十进制转换为常见进制时, 对十进制数的整数部分除基取余, 逆序输出;小数部分乘基取整, 顺序输出的方法来求解。例如, 将十进制数 (13.25) 10转换为二进制的过程如下图所示:

在十进制转换到其他进制的过程中, 整数部分除基取余, 产生的余数逆序输出;小数部分乘基取整, 产生的整数顺序输出。而栈和队列都是特殊的线性表, 栈的操作特性是先进后出, 队列的操作特性是先进先出, 正好可以利用栈的特性来处理转换过程中产生的余数, 用队列来处理转换过程中产生的整数。

例如, 十进制数 (13.25) 10, 要将其转化为二进制数, 其整数部分为13, 用13除2, 得到商数6和余数1, 将余数1放入栈中;当商数不为0, 继续用商数除2, 得到新的商数3和新的余数0, 余数入栈, 重复这个过程, 直到商数为0, 循环结束。从栈中依次弹出栈顶元素, 直到栈为空, 得到十进制数 (13.25) 10整数部分13对应的二进制数为1101。十进制数 (13.25) 10的小数部分则用乘基取整, 顺序输出的方法, 每次将小数部分乘以基数后所得的整数入队列, 再取结果的小数部分重复该过程, 直到达到所要求的精度后, 将队列中的元素依次出队列即可得到十进制数 (13.25) 10对应的小数部分为0.01, 将所求得的整数部分与小数部分合并即可得到要转化的结果, 即十进制数 (13.25) 10对应的二进制数为 (1101.01) 2。

将十进制数转换为N进制数的算法如下:

//分离十进制数中的整数部分, 并除基取余, 将余数入栈

//分离十进制数中的小数部分, 并乘基取整, 将乘得的整数入队列

//将整数部分与小数部分合并

在该算法的基础上, 可以实现十进制到任意进制的转换。

2 N进制数转换为十进制数

将其他进制数转换为十进制, 采用按位权展开求和的方法。例如, 将二进制数 (1011.1) 2转化为十进制数的过程如下: (1011.1) 2=1×2-1+1×20+1×21+0×22+1×23= (11.5) 10。在将N进制数转换成十进制数的过程中, 利用字符串来处理N进制数, 从N进制数的最后一位数字开始按位权展开求和。算法如下所示:

3 结束语

本文探讨了如何使用字符串、栈和队列等数据结构来解决十进制与常规进制之间的转换。在将十进制转换成常规进制时, 利用字符串来存储和处理十进制数;将十进制的整数部分和小数部分分开处理, 整数部分采用除基取余法, 利用栈先进后出的特性来存储余数, 获得所求N进制的整数部分;小数部分采用乘基取整法, 利用队列先进先出的特性来存储乘基所得的整数, 获得所求N进制的小数部分;最后将求得的N进制数的整数部分和小数部分合并。在将N进制数转换成十进制数时, 则采用按位权展开求和的方法, 利用字符串的基本操作来实现转换的过程。

参考文献

[1]叶核亚.数据结构 (Java版) (第3版) .北京:电子工业出版社.2014年.

[2]李明.大学计算机基础中数制转换两种新方法[J].电脑知识与技术, 2011 (7) :9018-9019.

二进制与十进制转化 第5篇

在我的印象里面进制互相转换确实是很常见的问题,所以在Python中,自然也少不了把下面这些代码收为util,

这是从网上搜索的一篇也的还可以的Python进制转换,经过验证可以使用。下面贴出它的实现代码:

二进制与十进制转化 第6篇

1.信息表达

计算机是机器,在当时背景下,用机器表达信息的局限性决定了使用二进制更加方便。书本从电流、电压等方面做了解释(如电位中高电位为1,低电位为0;线路中线路开通为1,闭合为0等)。

2.运算处理

计算机(ENIAC)研发的初衷是计算,机器在做计算时选择不同进制,将直接导致运算难度差异。下面我们通过比较1位数值A和数值B做加法运算,在实现上需考虑的情形。

(1)简单的二进制相加

从表1我们可以看出:二进制数值A和数值B做A+B运算,需考虑的情形仅有4种。结合当时条件,毫无疑问用二进制处理数据在机器实现上相对简单。

(2)较复杂的十进制相加

如果使用我们熟悉的十进制(如表2),做A+B运算需考虑的情形总共有100种,机器实现难度可想而知。从中我们可以看出冯·诺依曼选择二进制系统,在当时背景条件下毫无疑问是极其明智的。

数值:A

●科学探究:百花齐放的不同进制

用心去慢慢品味,你会发现我们生活中存在多种进制类型:1星期(星期一、星期二、……、星期七,七进制);2月份(一月、二月、……、十二月,十二进制);3时间(1点、2点、……、24点,二十四进制)。书本中还提到八进制、十六进制。不同进制运用于不同场合,为我们生活带来诸多便利。请学生结合生活中不同进制,并对其做深入探究。

1.基数的探究

基数,即基本数字,在不同进制中,常指数据在某一位置上允许出现的数字个数。下面,我们列举几种不同进制类型,对其基数进行比较。

2.十六进制中为何有字母

按表3理解,十六进制基本数字应为0、1、……、15。这样似乎很合理,但禁不住推敲。例如,数字10是代表某个具体位置,还是分别代表两个位置上的数字(一个位置为1,另一个位置为0)?很明显,如果十六进制基数这样表述,极易引发位置上的错位、混淆。

怎样解决这个问题?我们可以创建新符号来替代那些易引发混淆的双位数值(如画一个三角形符号代表数字10),用新符号来替代双位数值问题就解决了。人们常常将十六进制基本数字表达成0、1、……、9、A、B、……、F(如双位数值10用大写字母A表示),这种表述简单方便,易达成共识。

3.七进制的困惑(奇妙的0)

前面我们提到星期是七进制,它的基数是1、2、……、7。如果做七进制运算或许你会感到困惑:7+1=( ),3+4=( ),七进制逢7不进位,这让人难以接受,所以将七进制基数定为0、1、……、6将更加合理。

●科学探究:“位置标记”是进制的核心

要探究不同进制本质,我们先来分析熟悉的十进制,并挖掘其中蕴含的规律——位置标记。

(表中第1行是“位置标记”,第2行是对应位置下的数值)

1.“位置标记”的便利

在每一个数字上方标记出对应位置,这就是“位置标记”。表4(52154.23)10中有两个数字5,“位置标记”描述了数字5的差异,在位置4下方数字5=5*104,而在位置1下方数字5=5*101。

在进制系统中,“位置标记”是人类数值表达上的一大进步。笔者认为,其他进制也采用了“位置标记”法,这是进制系统的核心,也是不同进制彼此相通之处,是我们掌握进制换算的关键密钥。

2.统一进制,比较大小

(52154.23)8 (1001110.01)2 (5E1.A3)16

要让不同进制进行大小比较,我们必须统一进制。在表41处,我们利用“位置标记”将(52154.23)10逐位展开。同样通过这种方式,我们可以将八进制转换成十进制:

现在要将任意R进制转换成十进制,只需要调整基数R即可。为什么转换之后得到的就是十进制数?这是因为在“位置标记”法等式右端,我们的计算处理采用了十进制累加形式,因此不同进制数据都将换算成十进制。

3.4位二进制等同1位十六进制

在课堂教学中,许多教师都会提到,每4位二进制等同1位十六进制及“8421”法则。“知其然,更要知其所以然”,下面我们来揭开其神秘面纱。

请观察2展开式中的基数变化,你会发现二进制已转换成十六进制。

4.“8421”法则的由来

将2括号中的每组 数据写成通式为:(x值为0或1),4位二进制刚好对应1位十六进制数,这就是“8421”法则的由来。

如果二进制数据带有小数部分,则从小数点位置开始,整数部分向左,小数部分向右,每4位为一组用1位十六进制数表示,不足4位用“0”补足4位,这样就得到1位十六进制数的二进制形态。

为什么打点分组?因为小数部分无论如何转换,都不可能变成整数部分。将“8421”法则直接运用到计算中更加方便。我们将x值为“1”和“8421”对应数字累加,最后结果写成对应的十六进制形态即可。另外,十六进制转换成二进制是其逆运算过程,八进制与二进制转换与此类似。

●问题启发:任意进制的衍生

前面,我们可以将任意进制统一成十进制并比较大小。相反,如果给定十进制数据,我们怎样得到其他进制?我们先来回顾任意R进制“位置标记”法。

1.用余数构造基数

不同进制的不同主要是基数不同

(八进制有8个基本数字:0、1、……、7)。现在我们来考虑十进制整数除以R可能产生哪些余数?

除以2的余数为:{0、1}

除以8的余数为:{0、1、……、7}

当一个整数除以R时,其余数{0、1、……、R-1}恰好构成R进制的基本数字。

2.十进制转换成任意R进制

观察上面展开式3,你会发现其逆运算过程就是得到任意R进制的方法。

“将十进制的整数部分除以R,得到一个商和余数;再将这个商除以R,又得到一个商和余数;反复执行这个过程,直到商为0结束”,这就是“除以R取余”法。

3.除法为何倒立书写

倒立书写是为了使除法运算不断重复下去,在相除过程中,被除数在不断变小,直至为0。倒立书写为下一次除法预留了书写空间。另外,从直观上考虑,我们不妨将每次相除后得到的余数直接写在商旁边(如图1)。

很明显,现在得到的这组余数就是R进制数据。接下来是排列问题,这组余数是从上往下排列吗?

(1)列反例加以证实

图1中(54)10=(110110)2,当被除数刚好整除时,余数为0,但0是不可以当高位的,这说明书写顺序不可以从上往下。

(2)用十进制检验

进制数据处理彼此相通。当遇到困惑时,不妨回归到我们熟悉的十进制,或许马上就能有答案,如图2。

二进制与十进制转化 第7篇

VB文件操作分为程序工程建立、程序执行与程序数据读写3个阶段。程序工程建立阶段中的相关文件信息记录在VB系统的文件信息表中,包括文件名称、属性及路径等相关信息,这些都是通过VB的IDE环境中“文件”菜单来自动完成的。因此,保存了工程文件vbp后,特别是“另存为”更名文件名称后,其它相关辅助文件如窗体文件frm、通用过程文件bas及类文件cls等必须通过IDE中的“文件”菜单来完成,而不能通过操作系统Windows所提供的文件操作来实现,否则会造成因工程文件找不到其相关辅助文件而不能编辑与编译的错误。

程序执行阶段的文件操作通常是通过对话框实现的,VB提供了3类对话框:预定义对话框、自定义对话框与通用对话框。预定义对话框直接调用系统函数inputbox()和msgbox()来实现;自定义对话框通过窗体及标准控件制作;通用对话框由通用控件CommonDialog的Action属性或ShowOpen、ShowSave、ShowColor、ShowFont、Show-Printer和ShowHelp方法实现,根据不同的适用场合分为6种类型。当然,程序执行阶段的文件操作也可通过将驱动器列表框DriverListBox、目录列表框DirListBox和文件列表框FileListBox关联起来,这3种文件操作控件相互关联。

假设程序界面中需要联动的3个文件控件对象名称分别是Drive1、Dir1和File1,产生联动的事件过程如下:

程序数据读写阶段的文件操作可通过3 类文件实现[1]:顺序文件、随机文件和二进制文件,VB提供了程序读写这3类文件的语句和函数。顺序文件为文本文件,即不定长记录文件,没有记录号,因此不能同时进行读与写操作,且读与写必须按文件记录顺序进行;随机文件要求记录与字段必须是定长的,有用于定位与作为文件读写标识的记录号;二进制文件是字节流式文件,可任意位置读写,读写位置标识是字节整数byte。随机文件与二进制文件可按任意顺序同时进行读与写操作。三类文件的优势与不足:顺序文件结构简单,访问方式简单,顺序文件中的数据以ASCII字符形式存储,是普通的纯文本文件,可用任何字处理软件如记事本查看,但查找记录必须按顺序进行,不能同时对顺序文件进行读操作和写操作(output,append)。其读操作是在input模式下通过input # 与Line input#语句及input(n,#)函数实现,而写操作是在output与append模式下通过write # 与print# 语句完成;随机文件可以按任意顺序访问其中数据,可以方便地修改各个记录而无需重写全部记录,在打开文件后可同时进行读操作(get#)和写操作(put#),为默认文件打开方式,但不能用字处理软件查看,占用磁盘存储空间比顺序文件大,数据结构复杂,需要用户自定义类型(type…end type)来保证其记录与字段是定长的,数据的读写只能通过自定义类型变量来实现;二进制文件灵活性很大,占用空间小,可直接以字节byte为标识从任意位置访问(get#/put#)文件,但不能用字处理软件处理,不存在记录结构,编程难度大。

2 利用VB随机文件处理中文记录数据

随机文件具有严格的记录结构与字段结构,是标准数据库中关系表结构的代表。利用VB随机文件处理数据库关系报表非常方便,提供了通过Jet数据库访问Access等数据文件处理方法,从而实现VB的数据库编程[2]。

2.1 VB随机文件建立

随机文件建立分为3个步骤,首先在窗体模块frm或标准模块bas的公共段,定义用于描述记录数据结构的自定义数据类型,如存放“学籍档案”数据库中的学号、姓名、性别与成绩的数据类型结构为strec(no,xm,xb,cj)等;然后由定义的随机文件记录类型,定义存放文件数据的记录变量;最后在对随机文件读写前,通过带random模式的open语句完成随机文件的建立。

2.2 VB随机文件读写

通过get#语句与put#语句按记录号进行随机文件读写,其中需要上面定义的记录型变量,读写操作可通过事件过程、函数过程或通用sub过程完成。对于由数字或英文字符等纯ASCII字符组成的记录,读写操作均没问题。但对包含汉字字符的记录,由于每个汉字字符由两个字节组成,当从随机文件中读出的记录数据项的长度小于字段宽度时,则会产生只显示第一条记录的前面字段数据,后面的记录完全不能显示,即使对相应的记录数据项使用VB去掉字符串左右多余空格字符(其ASCII码值是32)的内部函数Ltrim()、Rtrim()和Trim(),也不能解决问题。而通过本文提供的nrtr()函数即可实现VB随机文件处理中文记录的目的,程序代码如下:

3 中文二进制文件读取

在VB应用开发中,经常需要读取二进制文件中的中文字符[3]。中文字符与占1个字节ASCII字符不同,每个汉字字符占2个字节,而VB二进制文件是以字节为单位所形成的字节流式文件,如果对读取的每个字节都使用字符转换函数chr(),则ASCII字符能正确显示,但中文字符会显示为乱码符。因此,读取二进制文件的程序需要判断每个字节,如果ASCII码值在0-128范围内,则按字节转换,否则,需要读取相邻的两个字节,并将高字节乘以权28(即256)左移8个位后,与低字节连接形成16位后再转换。正确读取中英文字符混合的二进制文件VB代码如下:

参考文献

[1] 宋汉珍,王贺艳.Visual Basic程序设计[M].北京:高等教育出版社,2011.

[2] 徐军,杨丽君,李翠梅,等.Visual Basic与SQL Server 2005数据库应用系统开发[M].北京:清华大学出版社,2015.

二进制与十进制转化 第8篇

在进行计算机基础理论学习时, 进制转换是十分抽象的知识点, 通常带来老师讲起来费力、同学不理解的状况;另外, 通过专利检索发现, 虽然目前世界上进制转换器种类较多, 但是大都应用了传感器, 还没有二进制到十进制纯机械传动的转换装置。

基于以上两点, 设计开发了纯机械式二进制到十进制转换装置。本设计中, 通过转动二进制数字盘 (即输入一个二进制数) , 实现十进制数字盘自行转出相应十进制数字 (即输出一个十进制数) 。该转换装置的内部传动机构主要是由一个包含不完全齿轮的齿轮传动机构构成, 利用不完全齿轮机构的间歇运动特性, 实现精确转换, 最终达到逢十进一的效果。本装置不仅可作为计算机教学中的教具, 同时也可作为现有计算工具的有益补充。

1 二进制机构设计

如图1, 二进制装置由数字显示机构、进制间转换机构、进制内进位机构组成。所有机构由轴连接、轴承支撑。在连接方式中, 齿轮通过单向轴承支撑方式的机构如图2所示, 外框架或齿轮通过普通轴承支撑方式的机构如图3所示。

2 二进制装置的构件设计

2.1 数字显示机构

通过转动齿轮带动显示盘的标数一起转动, 达到同步的目的。数字显示机构俯视图如图4所示。

2.2 进制间各位“转换机构”

利用不同传动比的齿轮副, 实现二进制到十进制的进制各个相应位的对应关系。进制间传动比示意图如图5所示, 进制间各齿轮参数见表1。

2.3 进制间的“分位机构”

通过转动二进制中一个齿轮, 从而引起十进制中两个齿轮的转动。例如, 二进制中的第五位, 其数学意义为24=16, 传动比为1∶16, 此传动比太大。“分位机构”通过转动二进制第五位的齿轮, 带动两个齿轮转动, 即十进制中十位转动1个单位, 个位转动6个单位, 这样1∶16的传动比就被分解为1∶1、1∶6, 传动比缩小了, 但同样达到了1∶16的传动效果, 此设计使所需的齿轮副的传动比永远控制在10以下。分位机构示意简图见图6, 分位机构各齿轮参数见表2。

2.4 进制内的“进位机构”

通过不完全齿轮的间歇起作用, 实现逢十进一的进位目的。此进位机构都装有单向轴承, 当单向轴承1上面的齿轮正向旋转时, 可带动单向轴承1和下面的轴转动, 从而带动单向轴承2及其上面的齿轮连接的数字盘转动。当单向轴承1上面的齿轮逆向旋转时, 由于单向轴承的原因, 只有单向轴承1和下面的轴转动, 轴不转动, 所以此装置可实现正向转动可进位, 逆向转动相互之间无影响的效果。下面的齿轮为不完全齿轮, 传动比为10∶1, 从而实现逢十进一的效果。图7为进位装置示意图。

2.5 汇总处理机构

通过单向轴承的累加作用, 达到数据相加的效果。本装置所用的单向轴承只能向一个方向旋转, 达到正转可以进位, 反转则没有任何影响的效果。图8为单向轴承实物图。

3 结论

该装置能够通过转动数字盘, 实现给定一个二进制数字, 相应地在十进制数字盘自行旋转出十进制数字。因此, 该装置不仅可作为计算机教学中的教具, 同时也可作为现有计算工具的有益补充。

参考文献

[1]同济大学数学系.高等数学[M].北京:高等教育出版社, 2007.

[2]闻邦椿.机械设计手册[M].北京:机械工业出版社, 2010.

[3]濮良贵, 纪名刚.机械设计[M].7版.北京:高等教育出版社, 2001.

[4]大连理工大学工程图学教研室.机械制图[M].北京:高等教育出版社, 2007.

二进制与十进制转化 第9篇

统计某户居民的10个月的月用电量,找出最大月用电量,并计算出其所对应的电费。电费计算按如下规则:当月用电量小于等于200度时,按0.49元/度计算;当月用电量大于等于341度时,按0.79元/度计算;当月用电量在200度-341度之间时,按0.54元/度计算。将上述计算结果在屏幕上显示出来,要求最大月用电量可达65536度,即一个寄存器的最大容量,且电价以分为单位输出。如何利用汇编语言编程实现。文献[1]讨论了二进制与其他3种进制相互转换的编程思路和算法。文献[2]讨论了一种基于简单移位的二进制与十进制相互转换算法。文献[3,4]讨论了数制转换的本质和方法。但对于基于汇编语言的32位二进制与十进制转换的研究文献还不多见。

2 问题的分析

需要解决的核心问题是实现最大用电量以十进制形式在屏幕上显示出来。当月用电量位65536度时,电费为6553679=5177265(分),利用汇编语言实现时需进行16位16位=32位二进制数,存放于两个16位寄存器中。将此二进制数转换为十进制在屏幕上输出时,如按照传统的二、十进制转换方法,即除10取余,在进行第一次操作时由于5177265÷10=5177265,517726>65535,超过一个16位寄存器的容量,将立即发生溢出,计算终止。因此,针对此问题需另辟蹊径,从除法的本质出发,探求可能的解决方法。

3 方法的提出

除法作为四则运算之一,其实质可以理解为减法运算的扩展。举例来说,6÷2=3,可看作6在减过3次2后为0,概括来说,商即为被除数可以减去除数的最大次数。在掌握这一简单却关键的原理后,上述问题便可迎刃而解。

具体来说,当电费达到5177265分后,为实现十进制输出,可以不断减10,并记录下减法次数,即为商;完成若干次减法运算后首次小于10的被减数即为余数。完整程序实现如下,全文共180行,其中包含3个子程序,实现的功能包括从屏幕输入10个用电量,显示最大用电量及对应电费。

pig segment stack′stack′

sta db 10 dup(?)

top equ length sta

pig ends

data segment

tab1 dw 100 dup(?);存放用电量

tab2 db 10000 dup(?);用于进制转换的数组

tab3 db′max=′,′$′

tab4 db′maxcharge=′,′$′

tab5 db′cents′,′$′

tab6 db′input 10 numbers:′,′$′

data ends

code segment

call dec2bin;调用十进制转换为二进制子程序

mov bx,1;记录di指针位置

mov cx,0;记录减法次数即商

call hex2dec;调用十六进制转换为十进制子程序

jnz s6;在屏幕上显示10个用电量;

s0:mov[di],al;余数存入[di]

je s2;商为0,可以输出了

xor cx,cx;重新记录商jmp s1

s2:mov dl,[di]

or dl,30h mov ah,02h int 21h

dec di dec bx

jz s3

jmp s2

s3:mov dl,00h

mov ah,02h int 21h

ret

hex2dec endp

ww:lea si,tab1

mov cl,10

mov ax,[si]

add si,2l2:cmp ax,[si]

jae l1

mov ax,[si]l1:add si,2

loop l2;最大用电量放于ax mov cx,ax;

mov dx,offset tab3mov ah,09h

int 21h;输出提示字符xor dx,dx

mov ax,cx push ax

mov bx,1;记录指针位置

mov cx,0;记录减法次数即商lea di,tab2

call hex2dec mov dl,00h mov ah,02h

int 21h;输出最大用电量mov dx,offset tab4

mov ah,09h int 21h

pop ax xor dx,dx cmp ax,200jbe p1

cmp ax,341

jae p2

mov bx,54mul bx

jmp p0p1:mov bx,49

mul bx

jmp p0

p2:mov bx,79

xor dx,dx

mul bx;最大电价存入ax&dx xor si,si

add si,1

p0:xor bx,bx;bx存放商的高16位

xor cx,cx;记录减法次数即商lea di,tab2

p6:cmp dx,0

je p3

sub ax,10sbb dx,0

cmp cx,0ffffh;cx记满了je q0

inc cx jmp p6

q0:inc bx;bx存放商的高16位mov cx,0;低16位清零

jmp p6p3:cmp ax,10

jb p5

sub ax,10

cmp cx,0ffffh jz q1

inc cx

jmp p3q1:inc bx

xor cx,cx jmp p3

p5:mov[di],al;ax中为余数

inc si inc di

xor ax,ax cmp bx,0

je next;高16位为0;

mov dx,bx;高16位商放入dx mov ax,cx;低16位商放入ax xor bx,bx

xor cx,cx;清零

jmp p6;开始新一轮计算

next:mov ax,cx int 21h

mov cx,0;记录减法次数即商; mov ah,4ch

mov bx,siint 21h

call hex2deccode ends

done:mov dx,offset tab5end start

mov ah,09h

输出结果示意如下:

4 结束语

本文着眼于除法的本质,创造性地实现了32位二、十进制转换,克服了运用传统方法时的溢出现象,并对进行更多位数的进制转换研究工作提供了新的思路。同时为改进电费的收费系统提供了新的理论依据。

摘要:以居民用电量及电费计算为研究背景,创造性地提出了利用汇编语言实现32位二进制数转换为十进制的具体方法,并提供了相应的代码,对今后基于汇编语言进行更多位数的二、十进制转换具有抛砖引玉之意义。

关键词:汇编语言,32位二进制-十进制转换

参考文献

[1]白玉,刘子恒.通过汇编语言编程实现进制转换[J].软件导刊,2007,(7).

[2]王迎春,吉利久.一种基于简单移位的二-十进制相互转换算法[J].电子学报,2003,31(2):221-224.

[3]陈清华等.数制转换的本质和方法[J].江西师范大学学报,2006,30(2):123-126;

二进制与十进制转化

二进制与十进制转化(精选9篇)二进制与十进制转化 第1篇初中信息技术考试有对数制的考核,要求学生理解计算机运算的基础“二进制”,并要...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部