java 十进制数转换为二进制,八进制,十六进制数的算法
- 格式:doc
- 大小:26.50 KB
- 文档页数:5
java 2进制 8进制 16进制的表示方法Java中,表示二进制、八进制和十六进制的方法主要有以下几种:1.二进制表示法:二进制是以0b或0B开头的,后面跟着一串由0和1组成的数字序列。
二进制表示法在Java SE 7以后开始支持。
例如,使用二进制表示整数42和负数-42的方式如下所示:int num1 = 0b101010; //表示十进制的42int num2 = -0b101010; //表示十进制的-42需要注意的是,Java中的整型字面量默认是十进制的,如果需要使用其他进制的整数,需要使用前缀来指定。
1.八进制表示法:八进制是以0开头的,后面跟着一串由0~7组成的数字序列。
八进制的表示法在Java中可以通过使用前缀0来实现。
例如,使用八进制表示整数42和负数-42的方式如下所示:int num1 = 052; //表示十进制的42int num2 = -052; //表示十进制的-421.十六进制表示法:十六进制是以0x或0X开头的,后面跟着一串由0~9和A~F(不区分大小写)组成的数字和字母序列。
十六进制的表示法在Java中比较常用。
例如,使用十六进制表示整数42和负数-42的方式如下所示:int num1 = 0x2A; //表示十进制的42int num2 = -0x2A; //表示十进制的-42需要注意的是,十六进制中的字母部分可以是大写的A~F,也可以是小写的a~f。
除了整数以外,浮点数、字符和字符串也可以使用二进制、八进制和十六进制的表示法:1.二进制浮点数表示法:二进制浮点数是以0b或0B开头的,后面跟着一串由0和1组成的数字序列,并且使用科学计数法表示。
例如,使用二进制表示小数0.75的方式如下所示:double num = 0b0.11; //表示十进制的0.75需要注意的是,浮点数的表示法可以使用小写的b,也可以使用大写的B。
1.八进制浮点数表示法:八进制浮点数是以0.开头的,后面跟着一串由0~7组成的数字序列,并且使用科学计数法表示。
一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分①整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。
下面举例:例:将十进制的168转换为二进制得出结果将十进制的168转换为二进制,(10101000)2分析:第一步,将168除以2,商84,余数为0。
第二步,将商84除以2,商42余数为0。
第三步,将商42除以2,商21余数为0。
第四步,将商21除以2,商10余数为1。
第五步,将商10除以2,商5余数为0。
第六步,将商5除以2,商2余数为1。
第七步,将商2除以2,商1余数为0。
第八步,将商1除以2,商0余数为1。
第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000(2)小数部分方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。
如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。
换句话说就是0舍1入。
读数要从前面的整数读到后面的整数,下面举例:例1:将0.125换算为二进制得出结果:将0.125换算为二进制(0.001)2分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;第四步,读数,从第一位读起,读到最后一位,即为0.001。
例2,将0.45转换为二进制(保留到小数点第四位)大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。
⼀篇教程教你学会Python进制转换(⼗进制转⼆进制、⼋进制、⼗六进制)⼀、导⾔导语:在计算机进⾏数据交换时,常常会有⼀个进制转换的过程,我们知道计算机只认0 和 1.在内存系统中,基本基于⼆进制进⾏运算的,但是有时候数据过于庞⼤,为了⽅便存储管理,计算机会使⽤⼗六进制存储数据,但是怎么实现数据转换呢?我们⼈类由⼗根⼿指头,所以⾃然就使⽤⼗进制啦,每当我们数数字到10之后,于是就重0 开始继续数,所以逢⼗进⼀就这么来了。
对于其它进制呢,也是同样的,⽐如最常见的⼆进制,也就是逢⼆进⼀,慢慢来,依次类推,所以数学的世界是多么的奇妙呀!今天给⼤家带来的是使⽤ Python 实现进制转换,内容包括如下:dec(⼗进制)—> bin(⼆进制)dec(⼗进制)—> oct(⼋进制)dec(⼗进制)—> hex(⼗六进制)⼆、各种进制介绍在转换之前,我们先了解以下各种进制⼗进制(Decimal)我们所熟知的⼗进制,其实是从 0 开始,数到 9 之后,就跳到 10,这样就变成了 10,数数⼤家总会把⼆进制(Binary)⼆进制同理,从 0 开始也就是 00(前⾯的⼀个0可以省去,但是为了更好的描述,所以保留),到 01,也变成了 10【对应⼗进制中的 3】,然后是 11【对应⼗进制中的 4】,100【⼗进制中的5】。
以此类推因为⼆进制的英⽂单词是 binary,所以在计算机运算的过程中,使⽤⼆进制会⽤如下⽅法,0b11(4),0b1101(13)等等⼋进制(Octal)理解了⼆进制,在理解⼋进制就很容易了,⼋进制是逢⼋进⼀,范围是 0~7,对⽐⼀下⼆进制,就很好理解啦!!⼗六进制(Hexadecimal)⼗六进制就可能会相对复杂⼀点点,⼗六进制是⽤数字 0~9 和英⽂字母 A - F(⼤⼩写随意) 表⽰,因此 A代表 10, F代表15。
为什么在计算机领域中,⼗六进制⽤途会如此⼴泛呢?给⼤家看⼀个对⽐:当数据⽐较⼤的时候,⼆进制显然不再那么使⽤,再看使⽤⼗六进制,就简短很多。
计算机进制之间的转换进制是计算机中用于表示数值的一组符号系统,包括二进制、八进制、十进制和十六进制等。
在计算机科学中,进制转换是一种常见且重要的操作。
本文将详细介绍计算机进制之间的转换方法。
1. 二进制 (Binary) 转换为十进制 (Decimal):方法1:将二进制数从右往左按位展开,每一位的值与2的幂相乘,然后将得到的结果相加。
例如,二进制数1101转换为十进制,计算过程如下:(1*2^3)+(1*2^2)+(0*2^1)+(1*2^0)=13方法2:使用公式法。
将二进制数从高位到低位按权展开,并将每一位的值乘以相应权重,然后将结果相加。
例如,二进制数1101转换为十进制,计算过程如下:(1*2^3)+(1*2^2)+(0*2^1)+(1*2^0)=132. 十进制 (Decimal) 转换为二进制 (Binary):方法1:使用除二取余法。
将十进制数从右往左不断除以2,直到商为0。
最后,将得到的余数按照从下往上的顺序排列,即为二进制数。
例如,十进制数13转换为二进制,计算过程如下:13÷2=商6、余16÷2=商3、余03÷2=商1、余11÷2=商0、余1将得到的余数按从下往上的顺序排列,即为二进制数1101方法2:使用公式法。
将十进制数转换为相应的二进制幂的和。
例如,十进制数13转换为二进制,计算过程如下:13=(2^3)+(2^2)+(2^0)=11013. 十进制 (Decimal) 转换为八进制 (Octal):方法1:使用除八取余法。
将十进制数从右往左不断除以8,直到商为0。
最后,将得到的余数按从下往上的顺序排列,即为八进制数。
例如,十进制数86转换为八进制,计算过程如下:86÷8=商10、余610÷8=商1、余21÷8=商0、余1将得到的余数按从下往上的顺序排列,即为八进制数126方法2:使用公式法。
将十进制数转换为相应的八进制幂的和。
十进制与其他进制的转换在计算机科学和数学中,进制是表示数字的系统。
常见的进制有十进制、二进制、八进制和十六进制等。
而十进制是我们最常用的进制,我们需要了解如何将其他进制的数转换成十进制,以及如何将十进制数转换成其他进制。
I. 从其他进制转换为十进制1. 二进制转换为十进制二进制是由0和1组成的进制,每一位的权重是2的幂。
例如,二进制数1101表示(1 * 2^3) + (1 * 2^2) + (0 * 2^1) + (1 * 2^0) = 13。
2. 八进制转换为十进制八进制是由0-7组成的进制,每一位的权重是8的幂。
例如,八进制数157表示(1 * 8^2) + (5 * 8^1) + (7 * 8^0) = 111。
3. 十六进制转换为十进制十六进制是由0-9和A-F(或a-f)组成的进制,每一位的权重是16的幂。
例如,十六进制数3F表示(3 * 16^1) + (15 * 16^0) = 63。
II. 从十进制转换为其他进制1. 十进制转换为二进制将十进制数不断除以2,并将余数逆序排列,直到商为0为止。
例如,将十进制数13转换为二进制数,计算过程如下:13 ÷ 2 = 6 余 16 ÷ 2 = 3 余 03 ÷ 2 = 1 余 11 ÷2 = 0 余 1逆序排列余数得到二进制数1101。
2. 十进制转换为八进制将十进制数不断除以8,并将余数逆序排列,直到商为0为止。
例如,将十进制数111转换为八进制数,计算过程如下:111 ÷ 8 = 13 余 713 ÷ 8 = 1 余 51 ÷ 8 = 0 余 1逆序排列余数得到八进制数157。
3. 十进制转换为十六进制将十进制数不断除以16,并将余数逆序排列,直到商为0为止。
十六进制数中,10表示A,11表示B,以此类推。
例如,将十进制数63转换为十六进制数,计算过程如下:63 ÷ 16 = 3 余 15 (F)3 ÷ 16 = 0 余 3逆序排列余数得到十六进制数3F。
数制转换二进制的小技巧数制转换是数学中一个非常基础的概念,它指的是将数字在不同的数制之间进行转换,最常见的数制包括十进制、二进制、八进制和十六进制。
其中,二进制数制是计算机系统中最重要的数制之一,因为计算机只能识别和处理二进制的数据。
在进行十进制到二进制的转换时,可以使用以下的小技巧,使得转换的过程更加简单快捷。
1.从右到左逐位除以2:把十进制数从右到左逐个除以2,并将余数记录下来,直到商为0为止。
最后将记录的余数从下往上排列,即得到对应的二进制数。
2.直接乘2:将十进制数乘以2,将结果取整得到的整数部分作为二进制的最高位数字。
然后,将小数部分继续乘以2,取整,得到的整数部分作为二进制的次高位数字。
如此往复,直到小数部分为0或者达到所需的二进制位数为止。
3.利用位运算:对于整数的数制转换,可以使用位运算来实现。
首先,将待转换的十进制数转换为二进制形式的字符串表示。
然后,根据位运算的规则,将二进制数从右到左逐位进行“与运算”或“或运算”,以获取每一位的二进制值。
4.使用移位操作:移位操作是计算机中常用的一种二进制位运算操作。
左移操作相当于整数乘以2,右移操作相当于整数除以2、利用这一特性,可以将十进制数转换为二进制数。
通过不断进行左移和右移操作,最终得到对应的二进制数。
5.观察数学规律:一些数字的二进制转换存在规律。
例如,十进制数的偶数一定有个位数字为0,而奇数一定有个位数字为1、另外,如果一个十进制数是2的幂次方,则其对应的二进制数只有一个位为1,其余位都为0。
利用这些规律,可以更快速地进行数制转换。
总的来说,数制转换是一项基本的数学技能,并且在计算机科学和信息技术领域中非常重要。
熟练掌握数制转换的方法和技巧,能够更好地理解和应用计算机系统中的二进制数据。
这些小技巧可以帮助我们快速准确地进行十进制到二进制的转换,从而更好地理解计算机系统的基础原理。
数制间的转化⽅法
前话:通常使⽤⼗进制数,但由于计算机中使⽤的是⼆进制数,所以,必须将输⼊的⼗进制数转换为计算机能够接受的⼆进制数,运算结束后再转换为⼈们所习惯的⼗进制数,是由计算机系统⾃动完成。
引⼊⼋进制和⼗六进制的⽬的是为了书写和表⽰上的⽅便。
⼀,⼗进制数转换为⾮⼗进制数
1,⼗进制整数转换为⾮⼗进制整数
除基取余法:即将⼗进制整数逐次除以需要转换为的数制的基数,直到商为0为⽌,然后将所得的余数⾃下⽽上排列即可。
简⾔之:除基取余,先余为低(位),后余为⾼(位);
2,⼗进制⼩数转换为⾮⼗进制⼩数
乘基取整法:即将⼗进制⼩数逐次乘以需转换为的数制的基数,直到⼩数部分的当前值等于零为⽌,然后将所得到的整数⾃上⽽下排列。
简⾔之:乘基取整,先整为⾼(位),后整为低(位);
如果⼀个⼗进制数既有整数部分,⼜有⼩数部分,则应将两者分别进⾏转换,然后把两者相加便得到结果。
⼆,⾮⼗进制数转换为⼗进制数
⾮⼗进制数转换为⼗进制数采⽤位权法,即把各⾮⼗进制按权展开,然后求和即可。
三,⼆进制和其他进制之间的转换
1,⼆进制与⼋进制之间的转换由于3位⼆进制数恰好是1位⼋进制数,所以若把⼆进制数转换为⼋进制数,只要以⼩数点为界,将整数部分⾃右向左和⼩数部分⾃左向右分别按每三位为⼀组,(不⾜三位⽤零补齐),然后将各个3位⼆进制数转换为对应的1位⼋进制数,即得到结果。
反之,若把⼋进制数转换为⼆进制数,只要把每⼀位⼋进制数转换为对应的3位⼆进制数即可。
2,⼆进制与⼗六进制之间的转换
同上,每四位为⼀组进⾏对应转换即可。
一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分①整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。
下面举例:例:将十进制的168转换为二进制得出结果将十进制的168转换为二进制,(10101000)2分析:第一步,将168除以2,商84,余数为0。
第二步,将商84除以2,商42余数为0。
第三步,将商42除以2,商21余数为0。
第四步,将商21除以2,商10余数为1。
第五步,将商10除以2,商5余数为0。
第六步,将商5除以2,商2余数为1。
第七步,将商2除以2,商1余数为0。
第八步,将商1除以2,商0余数为1。
第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000(2)小数部分方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。
如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。
换句话说就是0舍1入。
读数要从前面的整数读到后面的整数,下面举例:例1:将0.125换算为二进制得出结果:将0.125换算为二进制(0.001)2分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;第四步,读数,从第一位读起,读到最后一位,即为0.001。
例2,将0.45转换为二进制(保留到小数点第四位)大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。
二进制八进制十进制十六进制四种算法之间的互相转换1.二进制转十进制:二进制数是基于2的数制系统,只包含0和1两个数字。
转换二进制数到十进制数非常简单,只需要将二进制数中的每个数字乘以2的幂次方,然后将结果相加即可。
例如,二进制数"1010"转换为十进制数的计算方法如下:1*2^3+0*2^2+1*2^1+0*2^0=8+0+2+0=102.八进制转十进制:八进制数是基于8的数制系统,只包含0到7的数字。
转换八进制数到十进制数也非常简单,只需要将八进制数中的每个数字乘以8的幂次方,然后将结果相加即可。
例如,八进制数"753"转换为十进制数的计算方法如下:7*8^2+5*8^1+3*8^0=7*64+5*8+3=448+40+3=4913.十六进制转十进制:十六进制数是基于16的数制系统,包含0到9的数字和A到F的字母。
转换十六进制数到十进制数也非常简单,只需要将每个十六进制数字乘以16的幂次方,然后将结果相加即可。
其中字母A到F分别表示10到15、例如,十六进制数"3AF"转换为十进制数的计算方法如下:3*16^2+10*16^1+15*16^0=3*256+10*16+15=768+160+15=9434.十进制转二进制:十进制数是我们日常生活中最常用的数制系统,包含数字0到9、转换十进制数到二进制数可以使用除2取余法。
具体步骤是:将十进制数除以2,直到商为0,然后将每次的余数倒序排列起来作为二进制数的结果。
例如,将十进制数10转换为二进制数的步骤如下:10/2=5余05/2=2余12/2=1余01/2=0余1倒序排列余数得到二进制数"1010"。
5.十进制转八进制:将十进制数转换为八进制数也可以使用除8取余法。
具体步骤与转换为二进制数相似,只需要将除数改为8即可。
例如,将十进制数25转换为八进制数的步骤如下:25/8=3余13/8=0余3倒序排列余数得到八进制数"31"。
各种进制之间的转换方法
首先,我们来讨论二进制和十进制之间的转换方法。
二进制是计算机中最常用的进制,而十进制则是我们日常生活中最常见的进制。
在二进制和十进制之间进行转换时,最简单的方法是将二进制数按权展开,然后相加即可得到其对应的十进制数。
例如,二进制数1011可以按权展开为12^3 + 02^2 + 12^1 + 12^0,计算后得到对应的十进制数为11。
接下来是八进制和十进制之间的转换方法。
八进制是以8为基数的进制,而十进制是以10为基数的进制。
在八进制和十进制之间进行转换时,我们可以将八进制数按权展开,然后相加得到其对应的十进制数,或者将十进制数除以8并取余数得到其对应的八进制数。
然后是十六进制和十进制之间的转换方法。
十六进制是以16为基数的进制,常用于表示颜色、内存地址等信息。
在十六进制和十进制之间进行转换时,我们可以将十六进制数按权展开,然后相加得到其对应的十进制数,或者将十进制数除以16并取余数得到其对应的十六进制数。
除了以上介绍的进制之间的转换方法,我们还可以通过进制之
间的转换来进行加减乘除运算。
例如,在二进制中进行加法运算时,我们可以按位相加,并注意进位的处理;在十六进制中进行乘法运
算时,我们可以将十六进制数转换为十进制数后进行乘法运算,再
将结果转换回十六进制数。
总之,掌握各种进制之间的转换方法对于理解计算机原理和进
行编程是非常重要的。
通过本文的介绍,希望读者能够更好地理解
和运用各种进制之间的转换方法,从而提高自己在计算机科学和数
学领域的能力。
java中进制的转换,Byte与16进制的转换⽅法java中对于进制的转换有很多⽅式,其中对于常见的基本的⼆进制⼋进制⼗进制⼗六进制等的转换有对于的包装类实现,不需要通过⼆外的算法来进⾏实现,具体如下:⾸先关于最简单的⼆进制转换的⽅法有:⼗进制转成⼗六进制:String Integer.toHexString(int i)⼗进制转成⼋进制String Integer.toOctalString(int i)⼗进制转成⼆进制String Integer.toBinaryString(int i)⼗六进制转成⼗进制Integer.valueOf("FFFF",16).toString() //不能处理带前缀的情况 0x⼋进制转成⼗进制Integer.valueOf("76",8).toString() //前缀0可以被处理⼆进制转⼗进制Integer.valueOf("0101",2).toString()有什么⽅法可以直接将2,8,16 进制直接转换为10进制的吗 ?ng.Integer类parseInt(String s, int radix)使⽤第⼆个参数指定的基数,将字符串参数解析为有符号的整数。
examples from jdk:parseInt("0", 10) returns 0parseInt("473", 10) returns 473parseInt("-0", 10) returns 0parseInt("-FF", 16) returns -255parseInt("1100110", 2) returns 102parseInt("2147483647", 10) returns 2147483647parseInt("-2147483648", 10) returns -2147483648parseInt("2147483648", 10)throwsa NumberFormatExceptionparseInt("99",throwsa NumberFormatExceptionparseInt("Kona", 10)throwsa NumberFormatExceptionparseInt("Kona", 27)returns 411787进制转换如何写(⼆,⼋,⼗六)不⽤算法Integer.toBinaryStringInteger.toOctalStringInteger.toHexString然后是介绍java中的byte与⼗六进制数的转换原理分析:Java中的byte是由8个bit组成的,⽽16进制即16中状态,它是由4个bit来表⽰的,因为24=16。
数组进制转换是指将一个数组中的每个元素从一种进制转换为另一种进制。
进制是指表示数字的基数,常见的进制有二进制、八进制、十进制和十六进制。
下面以将一个十进制数组转换为二进制数组为例,介绍数组进制转换的方法:
1. 首先,将十进制数组中的每个元素转换为二进制。
可以使用内置函数或算法来完成这个转换。
例如,对于十进制数10,其二进制表示为1010。
2. 将每个十进制数的二进制表示连接起来,形成一个二进制字符串。
对于十进制数组[10, 5, 8],转换后的二进制字符串为1010 0101 1000。
3. 可以选择将二进制字符串存储在一个新的数组中,或者将其作为字符串处理。
如果选择存储在数组中,可以将每个二进制数存储为一个元素。
如果选择作为字符串处理,可以的操作来处理和操作二进制字符串。
需要注意的是,不同的进制转换方法会有所不同。
例如,将十进制数组转换为八进制或十六进制数组,需要使用相应的进制转换规则。
总之,数组进制转换是将一个数组中的每个元素从一种进制转换为另一种进制的过程。
可以使用内置函数或算法来完成进制转换,然后将转换后的结果存储在新的数组中或作为字符串处理。
十进制转二进制:用2辗转相除至结果为1将余数和最后的1从下向上倒序写就是结果例如302302/2=151余0151/2=75余175/2=37余137/2=18余118/2=9余09/2=4余14/2=2余02/2=1余0故二进制为100101110二进制转十进制从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制:第0位:1乘2的0次方=11乘2的1次方=20乘2的2次方=01乘2的3次方=80乘2的4次方=01乘2的5次方=321乘2的6次方=640乘2的7次方=0然后:1+2+0+8+0+32+64+0=107.二进制01101011=十进制107.二进制转十进制,十进制转二进制的算法---------------------------------------------------------------二进制转十进制,十进制转二进制的算法十进制转二进制:用2辗转相除至结果为1将余数和最后的1从下向上倒序写就是结果例如302302/2=151余0151/2=75余175/2=37余137/2=18余118/2=9余09/2=4余14/2=2余02/2=1余0故二进制为100101110二进制转十进制从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制:第0位:1乘2的0次方=11乘2的1次方=20乘2的2次方=01乘2的3次方=80乘2的4次方=01乘2的5次方=321乘2的6次方=640乘2的7次方=0然后:1+2+0+8+0+32+64+0=107.二进制01101011=十进制107.一、二进制数转换成十进制数由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。
这种做法称为"按权相加"法。
二进制、八进制、十进制、十六进制四种算法之间的互相转换Tag: 二进制 , 八进制 , 十六进制 , 十进制 | Author: jakee | 一)、数制计算机中采用的是二进制,因为二进制具有运算简单,易实现且可靠,为逻辑设计提供了有利的途径、节省设备等优点,为了便于描述,又常用八、十六进制作为二进制的缩写。
一般计数都采用进位计数,其特点是:(1)逢N进一,N是每种进位计数制表示一位数所需要的符号数目为基数。
(2)采用位置表示法,处在不同位置的数字所代表的值不同,而在固定位置上单位数字表示的值是确定的,这个固定位上的值称为权。
在计算机中:D7 D6 D5 D4 D3 D2 D1 D0 只有两种0和18 4 2 1二)、数制转换不同进位计数制之间的转换原则:不同进位计数制之间的转换是根据两个有理数如相等,则两数的整数和分数部分一定分别相等的原则进行的。
也就是说,若转换前两数相等,转换后仍必须相等。
有四进制:十进制:有10个基数:0 ~~ 9 ,逢十进一二进制:有2 个基数:0 ~~ 1 ,逢二进一八进制:有8个基数:0 ~~ 7 ,逢八进一十六进制:有16个基数:0 ~~ 9,A,B,C,D,E,F (A=10,B=11,C=12,D=13,E=14,F=15) ,逢十六进一1、数的进位记数法N=a n-1*p n-1+a n-2*p n-2+…+a2*p2+a1*p1+a0*p02、十进制数与P进制数之间的转换①十进制转换成二进制:十进制整数转换成二进制整数通常采用除2取余法,小数部分乘2取整法。
例如,将(30)10转换成二进制数。
将(30)10转换成二进制数2| 30 ….0 ----最右位2 15 (1)2 7 (1)2 3 (1)1 ….1 ----最左位∴ (30)10=(11110)2将(30)10转换成八、十六进制数8| 30 ……6 ------最右位3 ------最左位∴ (30)10 =(36)816| 30 …14(E)----最右位1 ----最左位∴(30)10 =(1E)163、将P进制数转换为十进制数把一个二进制转换成十进制采用方法:把这个二进制的最后一位乘上20,倒数第二位乘上21,……,一直到最高位乘上2n,然后将各项乘积相加的结果就它的十进制表达式。
JAVA十进制数转换为二进制八进制十六进制数的算法在Java中,可以使用以下算法将十进制数转换为二进制,八进制和十六进制数:1.十进制转二进制:- 定义一个String类型的变量binary,并初始化为空字符串。
-使用循环除以2的余数法,将十进制数不断除以2,直到商为0为止。
- 每次取得的余数加在binary的前面。
-商作为下一次的被除数。
- 翻转binary的顺序,得到最终的二进制数。
- 返回binary作为二进制数的结果。
```javapublic static String decimalToBinary(int decimal)String binary = "";while (decimal != 0)int remainder = decimal % 2;binary = remainder + binary;decimal /= 2;}return binary;```2.十进制转八进制:- 定义一个String类型的变量octal,并初始化为空字符串。
-使用循环除以8的余数法,将十进制数不断除以8,直到商为0为止。
- 每次取得的余数加在octal的前面。
-商作为下一次的被除数。
- 翻转octal的顺序,得到最终的八进制数。
- 返回octal作为八进制数的结果。
```javapublic static String decimalToOctal(int decimal)String octal = "";while (decimal != 0)int remainder = decimal % 8;octal = remainder + octal;decimal /= 8;}return octal;3.十进制转十六进制:- 定义一个String类型的变量hexadecimal,并初始化为空字符串。
-使用循环除以16的余数法,将十进制数不断除以16,直到商为0为止。
代码十进制转化为二进制的方法一、介绍在计算机编程和数字电路设计中,我们经常需要进行十进制到二进制的转换。
十进制和二进制分别是我们日常生活和计算机世界中常见的数字表示方式。
在本文中,我们将会介绍几种常见的将十进制代码转化为二进制代码的方法。
二、方法一:除二取余法除二取余法是我们最常见的将十进制转化为二进制的方法。
该方法是通过反复除以2并记录余数的方式,直到商为0为止。
下面我们通过一个例子来说明该方法的具体步骤:我们要将十进制代码27转化为二进制代码,按照除二取余法的步骤:1. 27 ÷ 2 = 13 余 1,记录余数12. 13 ÷ 2 = 6 余 1,记录余数13. 6 ÷ 2 = 3 余 0,记录余数04. 3 ÷ 2 = 1 余 1,记录余数15. 1 ÷ 2 = 0 余 1,记录余数1将记录的余数从下往上排列,得到27的二进制代码为11011。
除二取余法的优点是操作简单易懂,适用于小型整数的转换。
但缺点是对于大型整数的转换会比较繁琐。
三、方法二:倍增法倍增法是一种通过不断翻倍的方式,将十进制代码转化为二进制代码的方法。
该方法是通过多次减去最大的2的幂数的方式,直到减到0为止。
下面我们通过同样的例子来说明该方法的具体步骤:我们要将十进制代码27转化为二进制代码,按照倍增法的步骤:1. 找到最大的2的幂数,即2^4 = 16,27-16=112. 继续找到11的最大的2的幂数,即2^3 = 8,11-8=33. 继续找到3的最大的2的幂数,即2^1 = 2,3-2=14. 找到1的最大的2的幂数,即2^0 = 1,1-1=0根据每一步的操作结果,我们将得到27的二进制代码为11011。
倍增法的优点是适用于任意大小的整数,且不需要多次的除法运算,效率较高。
但缺点是对于非2的幂数的整数,需要进行多次判断。
四、方法三:通过位运算实现在一些编程语言中,通过位运算可以快速实现十进制到二进制的转换。
二进制,八进制,十进制,十六进制之间的转换算法一、十进制与二进制之间的转换(1)十进制转换为二进制,分为整数部分和小数部分① 整数部分方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。
下面举例:例:将十进制的168转换为二进制得出结果将十进制的168转换为二进制,(10101000)2分析:第一步,将168除以2,商84,余数为0。
第二步,将商84除以2,商42余数为0。
第三步,将商42除以2,商21余数为0。
第四步,将商21除以2,商10余数为1。
第五步,将商10除以2,商5余数为0。
第六步,将商5除以2,商2余数为1。
第七步,将商2除以2,商1余数为0。
第八步,将商1除以2,商0余数为1。
第九步,读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,即10101000(2)小数部分方法:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分为零为止。
如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。
换句话说就是0舍1入。
读数要从前面的整数读到后面的整数,下面举例:例1:将0.125换算为二进制得出结果:将0.125换算为二进制(0.001)2分析:第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;第四步,读数,从第一位读起,读到最后一位,即为0.001。
例2,将0.45转换为二进制(保留到小数点第四位)大家从上面步骤可以看出,当第五次做乘法时候,得到的结果是0.4,那么小数部分继续乘以2,得0.8,0.8又乘以2的,到1.6这样一直乘下去,最后不可能得到小数部分为零,因此,这个时候只好学习十进制的方法进行四舍五入了,但是二进制只有0和1两个,于是就出现0舍1入。
⼗进制转换成⼆进制、⼋进制、⼗六进制的通⽤⽅法/*** 将⼗进制转换成⼆进制、⼋进制、⼗六进制* 说明:* 1)、在JAVA语⾔⼀个整数⽤4个⼋位表⽰,即32个⼆进制位* 2)、⼀个⼆进制位⽤0和1表⽰,最⼤值是1* 3)、⼀个⼋进制位表⽰3个⼆进制位,最⼤值是7* 4)、⼀个⼗六进制位表⽰4个⼆进制位,最⼤值是15**/public class DecimalConvert {public static void main(String[] args) {int num = 60;System.out.println(num + "转换成⼆进制=" + toBinaryString(num));System.out.println(num + "转换成⼋进制=" + toOctalString(num));System.out.println(num + "转换成⼗六进制=" + toHexString(num));}/*** ⼗进制转成⼆进制* @param num 要转换成⼆进制的整数* @return 转成⼆进制后的字符串*/public static String toBinaryString(int num) {return trans(num, 1, 1);}/*** ⼗进制转成⼋进制* @param num 要转换成⼋进制的整数* @return 转成⼋进制后的字符串*/public static String toOctalString(int num) {return trans(num, 7, 3);}/*** ⼗进制转成⼗六进制* @param num 要转换成⼗六进制的整数* @return 转成⼗六进制后的字符串*/public static String toHexString(int num) {return trans(num, 15, 4);}/*** 进制公共计算⽅法,提取进制转换相同的代码* @param num 要转换的整数* @param base 要转换的进制基数,如果是⼆进制:base=1; 如果是8进制:base=7; 如果是16进制:base=15* @param offset 右移位数,由转换的进制类型决定。
java Ê®½øÖÆÊýת»»Îª¶þ½øÖÆ,°Ë½øÖÆ,Ê®Áù½øÖÆÊýµÄËã·¨
using System;
using System.Collections.Generic;
using ponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace ExDtoB
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//Ê®½øÖÆ×ª¶þÖÆ
public string DtoB(int d)
{
string b = "";
//ÅжϸÃÊýÈç¹ûСÓÚ2£¬ÔòÖ±½ÓÊä³ö
if (d < 2)
{
b = d.ToString();
}
else
{
int c;
int s = 0;
int n = d;
while (n >= 2)
{
s++;
n = n / 2;
}
int[] m = new int[s];
int i = 0;
do
{
c =
d / 2;
m[i++] = d % 2;
d = c;
} while (c >= 2);
b = d.ToString();
for (int j = m.Length - 1; j >=0; j--) {
b += m[j].ToString ();
}
}
return b;
}
//Ê®½øÖÆ×ª°Ë½øÖÆ
public string DtoO(int d)
{
string o = "";
if (d < 8)
{
o = d.ToString();
}
else
{
int c;
int s=0;
int n=d;
int temp = d;
while (n >= 8)
{
s++;
n = n / 8;
}
int[] m = new int[s];
int i = 0;
do
{
c =
d / 8;
m[i++] = d % 8;
d = c;
} while (c >= 8);
o = d.ToString();
for (int j = m.Length - 1; j >= 0; j--)
{
o += m[j];
}
}
return o;
}
//Ê®½øÖÆ×ªÊ®Áù½øÖÆ
public string DtoX(int d)
{
string x = "";
if (d < 16)
{
x = chang(d);
}
else
{
int c;
int s = 0;
int n = d;
int temp = d;
while (n >= 16)
{
s++;
n = n / 16;
}
string [] m = new string[s];
int i = 0;
do
{
c =
d / 16;
m[i++] = chang(d %
16);//ÅжÏÊÇ·ñ´óÓÚ10£¬Èç¹û´óÓÚ10£¬Ôòת»»ÎªA~FµÄ¸ñʽ
d = c;
} while (c >= 16);
x = chang(d);
for (int j = m.Length - 1; j >= 0; j--)
{
x += m[j];
}
}
return x;
}
//ÅжÏÊÇ·ñΪ10~15Ö®¼äµÄÊý£¬Èç¹ûÊÇÔò½øÐÐת»»
public string chang(int d)
{
string x = "";
switch (d)
{
case 10:
x = "A";
break;
case 11:
x = "B";
break;
case 12:
x = "C";
break;
case 13:
x = "D";
break;
case 14:
x = "E";
break;
case 15:
x = "F";
break;
default:
x = d.ToString();
break;
}
return x;
}
private void button1_Click(object sender, EventArgs e)
{
textBox2.Text = DtoB(Convert.ToInt32(textBox1.Text));//ʮת¶þ½øÖÆ
}
private void button2_Click(object sender, EventArgs e)
{
textBox2.Text =
DtoO(Convert.ToInt32(textBox1.Text));//ʮת°Ë½øÖÆ
}
private void button3_Click(object sender, EventArgs e)
{
textBox2.Text = DtoX(Convert.ToInt32(textBox1.Text));//ʮתʮÁù½øÖÆ
}
}
}。