V o l. 45 No. 2
332
计算机与数字工程
Computer &•Digital Engineering总第328期
2017年第2期
十进制整数转换为二进制整数的快速方法
刘硕1彭雷2
(1.荆门市第一中学荆门M8000)(2.中国地质大学计算机学院武汉430074)
摘要将人类使用的十进制数据转换为计算机使用的二进制数据,是计算机领域的一个重要问题。十进制整数转换为二进制整数的经典方法就是“除基倒取余”,数据较大时既不方便又容易出错。论文基于二进制整数各位的权值满足超递增序列以及二进制数的数符只有〇和1两种情况的特有属性,提出了一种十进制整数转换为二进制整数的快速方法。文中也给出了该转换方法的一些具体转换实例,结果表明:该转换方法,比经典的“除基倒取余”转换方法更简单高效,当数据规模较大时,转换效率更高。
关键词十进制整数;二进制整数;整数转换;超递增序列
中图分类号TP301 D O I:10. 3969/j. is s a1672-9722. 2017. 02. 024
A Fast Method to Convert a Decimal Integer into A Binary Integer
L I U Shuo1P E N G L e i2
(1. T h e F irs t Senior H ig h School o f Jingm en C ity, Jingm en 448000)
(2. School o f C o m p u te r,C hina U n iv e rs ity o f Geosciences,W uh a n430074)
Abstract I t is an im p o rta n t problem in com puter fie ld to convert a decimal data in to a b in a ry data used b y the com puters. T h e classic m ethod to convert a decim al integer in to a b in a ry integer is in v e rtin g the rem ainder b y d iv id in g the base.
H o w e v e r, the classic m ethod is n o t convenient and easy to m ake m istakes w hen the data is large. Based on the unique a ttributes th a t the w e ig h t o f each b it o f the b in a ry integer is a super increasing sequence and there are o n ly 0 and 1 in the characters o f the b in a ry data, a fa st m ethod to convert a decimal integer in to a b in a ry integer is presented in th is paper. Some example
s o f the conversion m ethod are also g iv e n T h e re s u lt shows th a t the new m ethod is sim pler and m ore e fficie n t th a n the classic m ethod, especially w hen the data is large.
Key Words decimal in te g er, b in a ry in te g er, integer conversion, super increasing sequence
Class Number TP301
i引言
不同进制的数据主要包括三个要素:数符、各 位的权值及进借位的原则[1~2]。数符就是构成这 种进制数的符号,每种进制的数据就表示这种进制 的数据有多少个数符。比如我们日常生活中应用 最为广泛的十进制数据,主要包括〇、1、2、3、4、5、6、7、8、9共10个数符。各位的权值表示当前 进制的数据某一位对数据的贡献,其权值的幂依小 数点为中心,往左的各位权值的幂方分别为〇、1、2、3…,往右各位的权值的幂方分别为一1、一2、一3…[5]。由于十进制数据是人类最常用的数据,所 以通常都需要将其它进制的数据转换成十进制的 数据。转换的方法就是将非十进制数据的每一个 数符与该位的权植相乘,将各位相乘的结果累加起 来,即为该数据表示的对应十进制数据[6~7]。例 如:十进制数1234. 567,依小数点为中心,各位的 权值分别为:1〇3、1〇2、101、10°、10—1、10—2、10—3,1234. 567表示的十进制数是由各位的权值乘以各 位的数符然后相加得到,即:1 * 1〇3+2 * 102+ 3 *
*收稿日期=2016年8月3日,修回日期:2016年9月17日
基金项目:国家自然科学基金(编号:41571403);中国博士后科学基金特别资助项目(编号:2012T50681)资助。
作者简介:刘硕,女,研究方向:优化设计与数字工程。彭雷,男,博士,副教授,研究方向:优化设计,算法设计。
2017年第2期计算机与数字工程333
101+4* 10。+ 5 * 10—1+ 6 * 10—2+7 * 10—3。类 似地,(1011. 01)2,依小数点为中心,各位的权值分 别为:23、22、21、2。、2-1、2-2,(1011.01)2表示的十 进制数是由各位的权值乘以各位的数符然后相加
1*2-2=11.25。进借位是数据加减时位数扩展的 原则:相加时逢基数进一,相减时借一当基数,比如 十进制数据进位时“逢十进一”,两个十进制数6 + 7超过了基数10需要进位,因此结果为13。同样 地,两个二进制数(1)2+(1)2的结果为基数2,因此 需要进一位,所以结果为(1)2+(1)2=(1〇)2。
冯诺依蔓计算机工作原理的核心思想就是计 算机工作在二进制状态[8~9]。计算机中的所有信 息,包括图片、视频、音频、文字、数据,全部都以二 进制的形式存在。而自然界中,人类使用的数据是 十进制。为了便于人类将现实生活中的数据转换 为计算机中的数据,因此如何将十进制数据转换为 二进制数据就成为计算机领域的一个非常重要的 问题。
本文基于二进制整数各位的权值满足超递增 序列的特有属性,并结合二进制数的数符只有〇和 1两种情况,每一位数符对整个数据的贡献或者就 是该位的权值,或者对整个数据没有任何贡献的关 系,提出了一种十进制整数转换为二进制整数的快 速方法。
2经典的“除基倒取余”转换方法
十进制数据转换为二进制数据的过程中,尤以 十进制整数转换为二进制整数最为常见[1°]。目前,十进制整数转换为二进制整数的经典方法就是 “除基倒取余”,即用十进制整数整除二进制的基数 2,直至商为〇时结束[11〜12]。在整除的过程中,每 一步得到一个余数。由于是整除2,所以余数只有 0和1两种。整除结束以后,将得到的余数按从后 到前的倒序排列,所得的结果即为转换后对应的二 进制数据。例如:图1给出了十进制整数21,按“除 基倒取余”转换成2进制后的结果,S卩(21)w = (1〇1〇1)2。这种方法简明扼要地给出了十进制整 数转换成二进制整数的方法。然而,当十进制整数 较大的时候,这种转换方法比较费时,一不小心也 非常容易将〇与1弄错[13]。
3快速转换方法的基本思想
定理1二进制整数各位的权值满足超递增 序列的关系,即:V j e N% 3》>21。
证明用归纳法进行证明。
1) 取7=1,有之工二之〉?。:“
2) 是,假定 2、
3)取7-=是+ 1,则
则定理1得证。
定理1说明,2的零次幂至2的任意次幂之累 加和,都小于2的该任意次幂之后的幂次方,即:S L〇2^'<22,S l〇2^'<23,
2=义<2〃。而我们知道,2的各次幕,正好是二
进制整数的各位权值。例如,八位二进制整数,从 最低位开始,各位的权值依次为:2°,21,22,23,24,25,26,27。按八位二进制整数的表示形式,各位的 权值依次为
272625242322212°
艮P:128 64 32 16 8 4 2 1。
根据定理 1 可知,64>32 +16 +8 + 4 + 2 +1,类似地,8>4+2+1。
定理1表明,二进制整数从低位到高位的每一 位权值,正好是超递增序列。
2211
2100
220
图1十进制整数转换为二进制整数的
经典“除基倒取余”法
4快速转换实例
由于二进制整数从低位到高位的每一位权值 正好是超递增序列。同时,二进制的数符只有〇和 1两种,如果某位的数符为0,则0与该位的权值相 乘仍然为0,即表示该位数符对于整个数据没做任 何贡献。如果某位的数符为1,则1与该位的权值 相乘结果为该位的权值,即表示该位数符对于整个 数据的贡献即为该位数据的权值。因此,任意十进 制整数转换成二进制整数时,可以不用“除基倒取 余”的方法,而是根据定理1即可快速得到。例如,我们仍然用十进制整数21为例来说明,由于25> 21>24,显然,十进制数21对应的二进制数中,为1的最高位只能是权值为24的那一位,即二进制数从
334刘硕等:十进制整数转换为二进制整数的快速方法第45卷
右往左数的第5位。不然,如果21对应的二进制
数中,为1的最高位是权值为25的那一位或更高的
数据位,此时即使其它的数据位全部取〇,该二进
制数表示的数据也至少是25=32,所表示的数据都
比21大。相反,如果21对应的二进制数中,为1
的最高位是权值为23的那一位或更低的数据位,此
时即使其它的数据位全部取1,该二进制数表示的
数据也一定比24小,因为2。+21+22+23<24,6P
此时表示的数据一定比21小。
由于已经确定了十进制数21对应的二进制
数,为1的最高位在权值为24的那一位,因此:
242322212°
168421
10101
此时即可快速地确定十进制数21对应的二进
制数为:(1〇1〇1)2。因为23= 8,显然这位只能取0
不能为1,不然即使其它位全部为〇,此时24+23=
24也大于21。同样地,由于22=4,显然这位只能
取1不能为〇,不然即使其它位全部为1,此时24+
也小于21。其它各位依此
道理,可以快速确定。
二进制数的各位权值即为2的各次幕方,以16
位二进制数为例,即:
262152U213
25242322
212211210
212°
292827 32768163848192409620481024
512256128 643216 8 4 21
按以上方法,〇〜65535之间的任意十进制整 数,即可快速地转移为二进制数。比如:将十进制 整数4097转换为二进制整数,由二进制数的各位 权值即可知道:此时为1的最高位只能在212位,从 211位到21位均只能为0,不然这中间任何一位为 1,其表示的数均超过4097 了,而2°位必须为1,否 则就不够4097。因此,十进制数4097对应的二进 制数为:(1〇〇〇〇〇〇〇〇〇〇〇1)2。
再比如,将十进制整数567转换为二进制整 数,根据以上转换方法,可快速地写出其二进制数 为:(1000110111)2。因为 1024>567>512,所以二进制为1的最高位一定处于29的位置,紧挨着的三 位28、27和26都必须为0,不然其中任何一位如果 取1,其结果必然大于567。而25位必须取1,不然 即使24、23、22、21和2°都取1,由于其权值之和 y;4n 2;<25=32, y;4n 2;+29<32+512 =544, 其结果必然小于567。同样地道理,24位必须取1,而23位必须取0,22、21和2°位都必须取1。
再比如:将十进制整数456转换为二进制整 数,根据以上转换方法,可快速地写出其二进制数 为:(111001000)2。
5结语
计算机冯诺依曼原理的核心思想之一就是计 算机中的所有信息与数据都是二进制。因此,如何 将人类使用的十进制数据转换为计算机使用的二 进制数据,是计算机领域的一个重要问题。十进制 整数转换为二进制整数的经典方法就是“除基倒取 余”,数据较大时既不方便又容易出错。本文基于 二进制整数各位的权值满足超递增序列的特有属,并结合“二进制数的数符只有〇和1两种情况,每 一位数符对整个数据的贡献或者就是该位的权值,或者对整个数据没有任何贡献”的关系,提出了一 种十进制整数转换为二进制整数的快速方法。文 中也应用该方法给出了一些具体的转换实例,结果 表明:该转换方法,比经典的“除基倒取余”转换方 法更简单高效,当数据规模较大时,效果尤为明显。
参考文献
[1]石元聆进制转换教学设计[J].计算机时代,2015(11):
96-97.
S H I Y u a nling. D esign o f num ber system conversion te a c h in g[J]. C om puter E r a,2015(11) : 96-97.
[2]陈嘉勇,张卫明,胡金龙,等.一种最优(k,p)进制转换
算法[J].应用科学学报,2013,31(6):569-578.
C H E N Jiayong, Z H A N G W e im in g, H U J in lo n g, et
al. A n E ffic ie n t (k,p) N o ta tio n a l System T ra n s fo rm
A lg o rith m [J].Journal o f A p p lie d Sciences, 2013,31
(6):569-578.
[3]顾沈明,张建科,崔振东,等.计算机基础[M].第三版.
北京:清华大学出版社,2014.
G U Shenm ing, Z H A N G Jianke, C U I Zhendong, et al.
Basis o f C o m p u te r[M]. T h ird E ditio n. B e ijin g:T s in g- hua U n iv e rs ity P ress,2014.
[4]刘益.基于“权”和“基”的任意进制转换[J].成都航空职
业技术学院学报,2010,26(3):57-58.
L I U Y i. A rb itra r y H exadecim al C onversion Based on W e ig h t and R a d ix[J]. Journal o f Chengdu A eronautic V ocational and T echnical C o lle g e,2010,26(3) :57-58. [5]刘均,李人厚,郑庆华.一种基于进制转换的数值型关
联规则分析方法[J].计算机工程,2005,31(9) J7-18.
L I U Jun, L I R enhou, Z H E N G Q inghua. A M eth o d fo r Q u a n tita tiv e A sso cia tio n R ule M in in g Based on D eci
m al-b in a ry C onversion [ J ].C om puter E n g in e e rin g,2005,31(9) :17-18. (下转第408 页)
408张宏鹏等:基于硬件云的智能车位锁系统设计第45卷
R E N L in D esign o f in te llig e n t door lo ck w ith W ifi com m unication and rem ote c o n tro l o f R F[A]."I T
T im e" E d itio n,2015.
[5]纪亚萍.基于W i-F i S o C的物联网平台设计[D].兰州:
兰州大学,2015.
J I Y aping. SoC W i-F i based on the In te rn e t o f things p la tfo rm design [D].L a n zho u:Lanzhou U n iv e rs ity,2015.
[6]邵伟,邵永琪.基于A P P的远程遥控车位锁控制系统
设计[J].通讯世界,2015(19) :280-281.
S H A O W e i, S H A O Y ongqi. Design o f rem ote c o n tro l p a rkin g lo c k c o n tro l system based on A P P[J]. Telecom
二进制转换10进制快捷方法W o rld, 2015(19) :280-281.
[7]舒辉.无线多传感器网络红外热释电传感器的微小型
化设计与研究[D].南京:南京理工大学,2006.
(上接第334页)
[6]赵建强.用多位数动态数组实现进制转换的研究[J].
湖南文理学院学报(自然科学版),2011,23(1) :71-73.
Z H A O Jianqiang. Research on realizing the system
conversion b y long num ber dynam ic array [J].Journal o f H u n a n U n iv e rs ity o f A rts and Science (N a tu ra l Sci
ence E d itio n) ,2011,23(1) :71-73.
[7]刘建波,蔡文水,吕铁山.十进制与任意进制转换的设
计与实现[J].计算机系统应用,2003(10) :69-71.
L I U Jianbo, C A N W enshui. T h e D esign and Im p le
m entation o f C onversion Between Decim al Representa
tio n and N-Scale N o ta tio n [J].A p p lica tio n s o f T h e
C om puter S yste m s,2003(10) :69-71.
[8]林荫,柴玮.C语言的进制转换分析[J].当代教育实践
与教学研究,2015(9) :20-21.
L I N Y in, C H A I W ei. A n a lysis o f num ber base conver
sion in C language [J].C ontem porary E ducation Re
search and T eaching P ra c tic e,2015(9) :20-21.
[9]屠新兵.C语言中进制转换的编程方法[J].电脑知识与
技术,2015,11(29) :124-125.
T U X inbing. P rog ra m m ing m ethod fo r num ber base conversion in C la n g u ag e[J]. C om puter K now ledge and T e c h n o lo g y,2015,11(29) :124-125.
S H U H u i. M ic ro design and research o f in fra re d pyroele ctric sensor based on w ireless sensor n e tw o r k[D].
N a n jin g: N a n jin g U n iv e rs ity o f Science and T ech n o lo
g y, 2006.
[8]韩丹翱,王菲.D H T11数字式温湿度传感器的应用性
研究[J1电子设计工程,2013,21 (13): 83-85.
H A N Danao, W A N G Fei. T h e applied research of
D H T11d ig ita l tem perature and h u m id ity s e n s o r[J]. E
le ctro n ic D esign E n g in e e rin g,2013,21 (13): 83-85. [9]倪天龙.单总线传感器D H T11在温湿度测控中的应用
[J].单片机与嵌人式系统应用,2010(6) :60-62.
N I T ian lo n g. Single bus sensor D H T11in a pplication o f tem perature and h u m id ity measurement and con tro l [J].M ic ro c o n tro lle r &• Em bedded System s, 2010 (6): 60-62.
[l〇]颜慧.任意精度的十进制与N进制之间的转换算法[J].福建电脑,2016(6) J39-140.
Y A N H u i. C onversion a lg o rith m between decim al and the base N w ith a rb itra ry p re c is io n[J]. F u jia n C om
p u te r,2016(6) :139-140.
[11]曾美华.使用“8421”法轻松进行数制转换[J].黑龙江
科技信息,2015(31): 108-108.
Z E N G M eihua. T h e use o f "8421" fo r easy conversion between d iffe re n t base [J].H e ilo n g jia n g Science and T ech n o lo g y In fo rm a tio n,2015(31) :108-108.
[12]崔方送,程国忠,潘大志.以十进制为中心的进制转换
算法的设计与实现[J].电脑开发与应用,2012,25(3): 66-68.
G U I Fangsong, C H E N G uozhong, P A N Dazhi. De
sign and Im ple m e n tatio n o f N um eral System C onver
sion Based on D e c im a l[J]. C om puter D evelopm ent &•
A p p lic a tio n s,2012,25(3) :66-68.
[13]罗国明,钟晴江.基于归类教学的进制转换算法研究
[J1计算机时代,2012(5):45-46.
L U O G u om ing, Z H O N G Q ingjiang. D ig ita l conver
sion a lg o rith m research based on classified teaching [J].C om puter E r a,2012(5) :45-46.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论