admin 管理员组文章数量: 1184232
2024年1月25日发(作者:java修改map指定key的value)
1.十进制
十进制使用十个数字(0、1、2、3、4、5、6、7、8、9)记数,基数为10,逢十进一。
历史上第一台电子数字计算机ENIAC是一台十进制机器,其数字以十进制表示,并以十进制形式运算。设计十进制机器比设计二进制机器复杂得多。而自然界具有两种稳定状态的组件普遍存在,如开关的开和关,电路的通和断,电压的高和低等,非常适合表示计算机中的数。设计过程简单,可靠性高。因此,现在改为二进制计算机。
2. 二进制
二进制以2为基数,只用0和1两个数字表示数,逢2进一。
二进制与遵循十进制数遵循一样的运算规则,但显得比十进制更简单。例如:
(1)加法:0+0=0 0+1=1 1+0=1 1+1=0
(2)减法:0-0=0 1-1=0 1-0=1 0-1=1
(3)乘法:0*0=0 0*1=0 1*0=0 1*1=1
(4)除法:0/1=0 1/1=1,除数不能为0
二、进制转换
1.二进制与十进制数间的转换
(1)二进制转换为十进制
将每个二进制数按权展开后求和即可。请看例题:
把二进制数()2=1*2
二进制数转换为十进制数:
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……
所以,设有一个二进制数:0110 0100,转换为10进制为:
下面是竖式:
2+0*2+1*2+1*2+0*2+1*2=()10
10-1-2-3
0110 0100 换算成 十进制
第0位 0 * 2 = 0
第1位 0 * 2 = 0
第2位 1 * 2 = 4
第3位 0 * 2 = 0
第4位 0 * 2 = 0
第5位 1 * 2 = 32
第6位 1 * 2 = 64
第7位 0 * 2 = 0
+
---------------------------
100
用横式计算为:
0 * 2 + 0 * 2 + 1 * 2 + 1 * 2 + 0 * 2 + 1 * 2 + 1 * 2 + 0 * 2 = 100
0乘以多少都是0,所以我们也可以直接跳过值为0的位:
1 * 2 + 1 * 2 + 1 * 2 + 1 * 2 = 100
23563210
(2)十进制转换为二进制
一般需要将十进制数的整数部分与小数部分分开处理。
整数部分计算方法:除2取余法 请看例题:
用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
故二进制为0
十进制整数转二进制数:"除以2取余,逆序输出"
例: (89)10=(1011001)2
2 89
2 44 …… 1
2 22 …… 0
2 11 …… 0
2 5 …… 1
2 2 …… 1
2 1 …… 0
0 …… 1
小数部分计算方法:乘2取整法,即每一步将十进制小数部分乘以2,所得积的小数点左边的数字(0或1)作为二进制表示法中的数字,第一次乘法所得的整数部分为最高位。请看例题:
例:
(0.625)10= 2
0.625
X 2
1.25
X 2
0.5
X 2
1.0
将()10转换成二进制。()10=()2
1. 125
0. 25
0. 5
1. 0
2.二进制与十六进制数间的转换
二进制 十六进制
0 0
1 1
10 2
11 3
100 4
101 5
110 6
111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
(1) 二进制数转换成十六进制数
二进制数转换成十六进制数方法如下,以二进制数1101110为例:
将二进制数从右面开始以四位为一组分组,最左面不够四位的补0,按上表查得对应的十六进制数,组合起来以后就成了。
4个2进制位为一个16进制数
如01011100,可看成是两组2进制数0101和1100,则这个数就是16进制的5C。
0110 1110的十六进制数是6E
(2) 十六进制转换成二进制方法
十六进制转换成二进制方法如下,以十六进制数3E为例:
将十六进制的每一位转换成四位二进制数,不足四位的在左面补0,组合起来即可得到二进制数。
3E的二进制数是00111110,既是111110
进制转16进制:
10转16
用传统的计算方式可以了,就是大于15小于256的10进制数除以16为的值为
十位的16进制数,其余数为个位的16进制数,没余数则个位为0。如61的16进制是3D,61除以16得3余13,3作十位数,13转成D为个位数。
16转10:
用相反的道理,将十位数乘以16加上个位数。如5A,将5乘以16得80,加上A的10进制10,结果是90。
十六进制数转换成十进制数:
2进制,用两个阿拉伯数字:0、1;
8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;
10进制,用十个阿拉伯数字:0到9;
16进制
16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。
十六进制数的第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进制:
5 * 16 + F * 16 + A * 16 + 2 * 16 = 10997
(别忘了,在上面的计算中,A表示10,而F表示15)
0123
现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。
4.二进制转为 8 进制
二进制转为 8 进制,可以 3 位二进制位编为一组(不够左侧补 0),然后从右边开始每三位按如下方式替换:
000 --- 0,
001 --- 1,
010 --- 2,
011 --- 3,
100 --- 4,
101 --- 5,
110 --- 6,
111 --- 7.
比如转换二进制数 那么分组为
001 110 101 010 100 按照转换方法对应转换
1 6 5 2 4
所以 (2) = 16524(8)
又如转换为 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
此时分组为 4 位二进制数为一组
比如转换二进制 011010,分组:
0010 1010 1001 0101 1010
2 A 9 5 A
版权声明:本文标题:进制转换算法 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1706155088a502178.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论