JAVA进制转换与位运算

进制概述

进制就是指进位计数制,是一个计数方式,比如我们常用的就是十进制,表示逢十进一,一个计数位不会有表示十的数,计算机使用的就是二进制,逢二进一,还要其他。比如八进制,十六进制等统称为X进制,都是逢X进一。
也有非进位计数值,比如正字计数制。

进制的转换

X进制转十进制

将系数*基数的权次幂相加就是十进制的值。
系数:每一位上的数。基数:X进制的计数就是X,比如二进制就是2。权:将X进制的数从右往左以0开始编号,所在位的编号就是权。
比如二进制数101,从右往左的每一位分别表示20,21,22,因此二进制数101转为十进制数为1*(20)+0*21+1*22= 5

十进制转X进制

十进制转X进制,就是将十进制数除以X,知道商0,将所得余数值从后往前排列就是X进制的值。
比如十进制5转为二进制得101得过程如下:
在这里插入图片描述

二进制转八进制、十六进制

二进制转八进制和十六进制得方式是类似得,只是所需要得位数不同,这里以八进制为例。
二进制转八进制是将二进制按每三位进行分组,将组内得三位二进制转为八进制,最后将所有组得值串起来即是转换后得八进制值。(十六进制就是按每四位进行分组)
比如二进制数10011101转为八进制 10(2) 011(3) 101(5) =》235
二进制10011101转为十六进制 1001(9) 1101(D) =》9D

八进制、十六进制转二进制

八进制、十六进制转二进制也是同理。
八进制转二进制就是将八进制得每一位转为相应得三位二进制数,再将所有得二进制数拼接起来。(十六进制就是将每一位转为相应得四位二进制数)
比如八进制 235转为二进制 2(10) 3(011) 5(101) =》 10011101
十六进制9D 转为二进制 9(1001) D(1101) =》10011101

位运算概述

进制学了,他的应用场景之一就是位运算。也是我们必须必会得地方。
因为计算机中使用的是二进制,因此我们需要掌握二进制的位运算操作。

原码、反码、补码

借用老韩的一张图
在这里插入图片描述

示例

2&3
2的原码:00000000 00000000 00000000 00000010 因为要参与运算,因此需要得到它的补码,正数的源码、反码、补码一致,可得补码为同为 00000000 00000000 00000000 00000010
3的原码:00000000 00000000 00000000 00000011 补码为 00000000 00000000 00000000 00000011
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
|-------------------------------------------------------|
00000000 00000000 00000000 00000010 运算后的补码
计算结果为原码,因此转为原码为:
00000000 00000000 00000000 00000010
转为十进制为 2.
因此2&3 = 2

简要说明

位运算的示例就不多说了,此处只是抛砖引玉,只是大家注意一下负数的符号位以及它的反码和补码的关系即可。
下面有一个小知识点不知道记录在哪里,就在此处随便记录下。
比如-10.5%3=?
解答上面的题需要知道取余的公示 a%b = a - (int) a / b * b。因此,带入后得到结果为 -1.5.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值