进制换算

现在大家见得比较多的进制一般就是二进制和十进制。首先作为一名学生用的最多的肯定是十进制,其次作为一名程序猿见得最多的肯定是二进制。但是作为程序猿而言中间还有八进制,后面还有十六进制比如哈希码。

先解释一下什么是进制:所谓通俗的进制就是逢多少进1,比如你上小学的时候,老师总会强调不要忘了进位。
二进制 逢二进一
八进制 逢八进一
十进制 逢十进一
十六进制 逢十六进一
十六进制大家可能比较陌生其实它的前面的数字和十进制是一样的
为0-9
但是等到10以及10以后就变成了ABCDEF。A表示10,B表示11以此类推。

既然谈到了进制的问题,就不可避免的要提到进制换算的问题,这里小数的进制换算比较复杂就先不提了,负数的话,前面我也提到过基本数据类型比如int类型,int类型是四个字节,就是32位,但是我们也了解到int的取值范围是-2^31~2^31 - 1就是因为32位最左边的那一位是符号位0代表正数,1代表负数
1、二进制转十进制:
在这里插入图片描述
这里的算法就是从右往左,从0开始 每一位上的数字乘以2的n次方再相加

2、二进制转八进制
在这里插入图片描述
将二进制的数字分成三位一组,每一组按十进制的方式计算,最后拼接起来。

3、二进制转十六进制
在这里插入图片描述
将二进制的数字分成四位一组,每一组按十进制的方式计算,最后拼接起来

4、十进制转二进制
在这里插入图片描述
十进制的数字每次都去除以一个2,直到商为1的时候结束,然后反着取商和余数,也就是红色数字部分的倒数结果是1111101

5、八进制转二进制
和二进制转八进制相反,每一个数字代表了2进制中的3位,每一个数字都按照十进制转2进制去转换,转换出来的结果不足3位,前面补0,凑齐3位

6、 十六进制转二进制
和八进制转二进制类似,只不过是一位数字变成4位2进制数字

7、八进制转十进制
和二进制转十进制类似,只不过底数从2变成8

8、十六进制转十进制
和二进制转十进制类似,只不过底数从2变成16

9、十进制转八进制
和十进制转二进制类似,除数从2变成8

10、十进制转十六进制
和十进制转二进制类似,除数从2变成16

下面再来提一个概念性的知识:
原码,反码,补码
原码就是参与运算的数字直接转换成二进制
负数的反码: 原码符号位不变,其他位取反
负数的补码:反码+1
正数的原码,反码。补码都是相同的
在java中,所有的运算都是以补码在进行运算

例如:

2+3直接写都是int类型的也就是32位的二进制数
000000000000000..10
000000000000000..11
00000000000000..101 = 5
下面再举一个例子:
比如:2-3=2+(-3)
2的原码:000000000000000..10
下面3的原码反码补码如下:
--
原码100000000000000..11
反码111111111111111..00
补码111111111111111..01
---
结果补码 111111111111111..11
结果反码 111111111111111..10
结果原码 100000000000000..01 = -1

所以最后的结果是-1也就是如果2-3交给计算机去做中间会经过这么多运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值