【Java基础】进制转换

前言

众所周知,计算机存储数据和运算都要使用二进制表示,如010111001,1和0其实也是一种表示方式,用来表示计算机的高电平和低电平

但是在java中如果数据都用0101011100这种来表示显然不直观,所以就引出了我们今天的主题,进制转换,那么计算机中有哪几种进制表示呢?

答案是最基本的二进制和八进制、十进制、十六进制
何为二进制?即逢二进一,所以二进制的表示全是有0、1组成,其余进制同理
那么为何是八进制、十六进制呢?
因为3位二进制数即可表示1位八进制数,4位二进制数即可表示1位十六进制数,纯粹是为了表示的简洁方便!

二进制与十进制之间的转换

二进制转十进制

以0101为例,从右往左,二进制位数分别乘以2的次幂(次幂从0开始依次递增)并求和,如下例
在这里插入图片描述
所以0101=5,下面代码亦可以验证

System.out.println("5的二进制数为:" + Integer.toBinaryString(5));
5的二进制数为:101

十进制转二进制

在这里插入图片描述
十进制转二进制也就是除2取余

二进制与八进制、十六进制的转换

二进制转八进制

因为3位二进制的最大值是7,八进制是逢8进1,所以八进制最大数字是7,则可以用3位二进制来表示1位八进制

如010111011,结果如下图
在这里插入图片描述
010111011的八进制值位273
java中表示八进制以数字0开头,用以区分十进制
所以八进制数273在java中就用0273表示
在这里插入图片描述
由图可验证计算正确
同理010111011转十六进制,4位为一组转换成十六进制
1011 1011 = bb b代表十进制数字11
java中以 0x开头表示十六进制数据 0xbb
十六进制标识符为0-9 和a-f

负数的二进制表现形式

有十进制转二进制可知 6 = 110,那么 -6 的表现形式就是6的二进制数取反+1

由于int型在计算机中占4个字节,所以6实际在计算机中表现形式为
0000 0000 0000 0000 0000 0000 0000 0110
取反结果为
1111 1111 1111 1111 1111 1111 1111 1001
+1 最终结果为
1111 1111 1111 1111 1111 1111 1111 1010

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章