Java 位运算

本文主要介绍了Java中的位运算,包括逻辑左移、逻辑右移、无符号右移、与运算、或运算、亦或运算和取反运算。通过实例详细解释了各种位运算的操作和结果,帮助开发者理解这些不常用但重要的运算符在查看和理解源码时的作用。
摘要由CSDN通过智能技术生成

Java 位运算

前言

​ 最近在重学java基础,虽然自己本身是做android开发的。包括现在kotlin已经成为google推崇的第一编程语言。其实我认为kotlin更像是站在巨人的肩膀上开发,他从来不是为了取代java而出现的。因为kotlin文件最终也会编译成class文件,感觉自己越学越不会或者说是感觉现在不知道该学什么。所以现在打算重新学习,从Java基础开始。老话说的好“地基不牢,地动山摇”。越是学习越觉得应该返璞归真。

位运算

​ 虽然在开发中不经常使用位运算,但是在翻看源码的时候会时不时遇到:逻辑左移(<<)、逻辑右移(>>)、亦或(^)等。还是有必要了解一下的,特此记录学习过程。

运算符运算说明
<<左移将数化为二进制左移多少位后面补多少零=数*2^(多少位)
>>右移是负数移动位补1,正数移动位补0
>>>无符号右移移动多少位补多少0
&与运算两个数的二进制相应位都是1为1,否则是0
|或运算两个数有1为1,否则为0
^亦或运算两个数的二进制位相同为0,否则为1
~取反运算包括符号位在内逐位取反

说明:正数的原、反、补码是自己二进制本身。负数的反码是二进制除符号位外逐位取反、补码是在反码的基础上加1

1.左移

说明:左移动多少位,低位补多少个0。

例如:-15左移两位 -15 << 2

在这里插入图片描述

最后将1…111100换算成10进制得到-60

2.右移

说明:如果是负数,右移动多少位最高位补多少个1。如果是正数右移动多少位高位补多少0。

例如:-15右移两位 -15 >> 2

在这里插入图片描述

最后将1…0100换算成十进制得到-4

3.无符号右移动

说明:不管是正数还是负数移动多少位,高位就补多少个0。

例如:-15右移动两位 -15 >>> 2

在这里插入图片描述

这边是正数即位原码了,直接计算001111…1100得到结果:1073741820

4.与运算

说明:两个数的二进制相与都是1返回1,都是0返回0,不相同返回0

例如:-15&15

在这里插入图片描述

运算得到:1

5.或运算

有1则1

例如:-15|15

在这里插入图片描述

因为或运算得到的是负数再求原码得到:-1

6.亦或运算

说明:相同为0,不同为1

例如:-15^15

在这里插入图片描述

因为亦或运算后是负数再求原码得到:-2

7.取反运算

说明:包括符号位在内的1变0,0变1
在这里插入图片描述
因为取反后是负数再求得其原码得到:-16

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值