[java基础揉碎]位运算符

java中有7个位运算(&、|、^、~、>>、<<和>>>)

第一组 

分别是按位与&、按位或|、按位异或^,按位取反~,它们的运算规则是:

按位与& : 两位全为1,结果为1,否则为0

按位或| : 两位有一个为1,结果为1,否则为0

按位异或^: 两位一个为0,一个为1,结果为1,否则为0

按位取反~: 0->1,1->0

比如:

2&3=?
推导过程:

 1.因为2和3是int 类型, 所以一共4个字节, 一个字节8位, 运算时一共32位二进制 
 2.因为在计算机运算的时候,都是以补码的方式来运算的, 所以要得到2的补码 
 3.要的到2的补码先得到2的源码, 因为正数的原码,反码,补码都一样, 得到源码便得到补码
 4.同样得到3的补码和源码, 进行按位与运算,
 5.按位与都为一的才为一, 计算得到运算后的补码
 6.又因为
当我们看运算结果的时候,要看他的原码, 而整数补码源码都一样, 所以也得到源码
 7.最后源码换算成十进制得到最终结果2

~-2=? 

推导过程:

 1.因为-2是int 类型, 所以一共4个字节, 一个字节8位, 运算时一共32位二进制 
 2.因为在计算机运算的时候, 都是以补码的方式来运算的, 所以要得到-2的补码 
 3.要的到-2的补码先得到-2的反码, 因为负数的补码=它的反码+1, 得到反码便需要到源码
 4.他的源码就是符号位为1(负数), 因为负数的反码=它的原码符号位不变, 其它位取反,得到反码
 5.最后反码+1得到补码, 在对补码进行按位取反运算, 得到运算后的补码
 6.得到的补码变为了正数, 我已源码也是这个补码

 7.最后源码换算成十进制得到最终结果1

~2=? 

推导过程:

 1.因为2是int 类型, 所以一共4个字节, 一个字节8位, 运算时一共32位二进制 
 2.因为在计算机运算的时候, 都是以补码的方式来运算的, 所以要得到2的补码 
 3.2的补码源码相同, 所以直接得到它的补码
 4.在对补码进行按位取反运算, 得到运算后的补码
 5.此时运算后的补码是负数, 要得到它的源码需要先得到它的反码, 负数的反码=负数的补码-1
 6.因为负数的原码等于它的符号位不变, 其他位取反, 得到它的原码
 7.最后源码换算成十进制得到最终结果-3

第二组 

还有3个位运算符>>、<<和>>>

运算规则:

1.算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位

2.算术左移<<:符号位不变,低位补0

3.>>>逻辑右移也叫无符号右移,运算规则是:低位溢出,高位补0

4.特别说明:没有<<<符号

举例: 

这里为了方便观看简洁一点假设是只有一个字节(实际int4个字节) 

1.算术右移 >> 把补码黄色01去掉 并用符号位0补溢出的高位得到00(1>>2代表右移两位)

可以用计算公式进行计算 1/2/2 原本等于0.25但是是整数,舍去小数位得到0

如果是15>>2  公式则为 15/2/2 舍去小数位得到3

2.算术右移 << 符号位不变 低位补00 最末尾多了两个00 

可以用计算公式进行计算 1*2*2 得到4

如果是4<<3  公式则为 4*2*2*2  得到32 

位运算规则 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/421736.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高低温恒温循环设备如何挑选

yong户在挑选高低温恒温循环设备的时&#xff0c;必定要对设备有所了解&#xff0c;那么&#xff0c;如何挑选适合的高低温恒温循环设备比较好呢? 高低温恒温循环设备在运行过程中是要进行高温、低温温度的操控的&#xff0c;yong户进行高低温运行之后&#xff0c;加热可利用导…

Pandas.Series.std() 样本标准差/总体标准差 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本&#xff1a; 本文基于 pandas2.1.2 编写。 关于本文内容更新&#xff1a; 随着pandas的stable版本更迭&#xff0c;本文持续更新&#xff0c;不断完善补充。 Pandas稳定版更新及变动内容整合专题&#xff1a; Pandas稳定版更新及变动迭持续更新。 Pandas API参…

Linux_清理docker磁盘占用

文章目录 前言一、docker system 命令1. docker system df&#xff08;本文重点使用&#xff09;2. docker system prune&#xff08;本文重点使用&#xff09;3. docker system info4. docker system events 二、开始清理三、单独清理Build Cache四、单独清理未被使用的网络 前…

竞赛保研 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉

文章目录 0 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习多目标跟踪 …

java小项目:简单的收入明细记事本,超级简单(不涉及数据库,通过字符串来记录)

一、效果 二、代码 2.1 Acount类 package com.demo1;public class Acount {public static void main(String[] args) {String details "收支\t账户金额\t收支金额\t说 明\n"; //通过字符串来记录收入明细int balance 10000;boolean loopFlag true;//控制循…

GitFlow工作流

基于 Git 这一版本控制系统&#xff0c;通过定义不同的分支&#xff0c;探索合适的工作流程来完成开发、测试、修改等方面的需求。 例如&#xff1a;在开发阶段&#xff0c;创建 feature 分支&#xff0c;完成需求后&#xff0c;将此分支合并到 develop 分支上&#xff1b;在发…

一文了解SSL证书价格

SSL证书的价格因供应商、证书类型和服务级别而异。以下是一些一般性的价格范围&#xff1a; 1. 免费证书&#xff1a;一些证书颁发机构&#xff08;CA&#xff09;提供免费的SSL证书&#xff0c;最著名的是JoySSL。这种证书通常适用于个人网站和小型业务。免费证书提供了基本的…

GEE:最小距离分类器(minimumDistance)分类教程(样本制作、特征添加、训练、精度、最优参数、统计面积)

作者:CSDN @ _养乐多_ 本文将介绍在Google Earth Engine (GEE)平台上进行最小距离分类(minimumDistance)的方法和代码,其中包括制作样本点教程(本地、在线和本地在线混合制作样本点,合并样本点等),加入特征变量(各种指数、纹理特征、时间序列特征、物候特征等),运行…

SMT贴片加工检测设备都有哪些

SMT贴片加工的工艺流程复杂繁琐&#xff0c;每个环节都需小心谨慎否则就会出现不良板&#xff0c;为确保产品质量合格&#xff0c;一般贴片加工厂都会使用各种检测设备对故障缺陷进行检测。那么在SMT贴片加工厂中最常见的检测设备都有哪些呢&#xff1f;它们的功能又是什么呢&a…

照片修复-GPEN框架

一 照片修复-GPEN介绍&#xff1a; gpen是一个优秀的照片修复框架,关键是开源的&#xff0c;它是基于GAN先验嵌入网络的野外盲脸复原&#xff0c;特别是针对人脸修复效果特别好&#xff0c;先看一下官方的效果图&#xff1a; 修复效果图前后对比&#xff1a; 二 安装GPEN 1 下…

uni-app小程序:文件下载打开文件方法苹果安卓都适用

api: const filetype e.substr(e.lastIndexOf(.)1)//获取文件地址的类型 console.log(文档,filetype) uni.downloadFile({url: e,//e是图片地址success(res) {console.log(res)if (res.statusCode 200) {console.log(下载成功,);var filePath encodeURI(res.tempFilePath);…

爬虫-selenium自动化(3)-验证码

#验证码分很多种&#xff0c;奇葩也无处不在:哪个是真茅台&#xff0c;红绿灯&#xff0c;摩托车......(我是个人都看不出来) (๑﹏๑) #本节内容为selenium自动化实现验证码通过-------字符验证码&#xff0c;点触验证码。 验证码介绍 字符验证码案例 点触验证码案例