[java基础揉碎]位运算符

news2024/10/3 2:25:43

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.coloradmin.cn/o/1402051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Debian11下编译ADAravis和Motor模块的一条龙过程

Debian11编译EPICS ADAravis记录 一年前整理的上面文&#xff0c;这几天重新走了一遍&#xff0c;有些地方会碰到问题&#xff0c;需要补充些环节&#xff0c;motor模块以前和areaDetector一条龙编译时&#xff0c;总是有问题&#xff0c;当时就没尝试了&#xff0c;这几天尝试…

生成当天递增唯一的流水号的几种方式

说明&#xff1a;当开发中&#xff0c;如交易、文件传输过程中的文件名&#xff0c;可能需要我们使用一串唯一的数字来锁定这一条“交互记录”&#xff0c;即流水号。 本文介绍几种生成6位递增唯一&#xff0c;且每日重置的流水号的方式。 方式一&#xff1a;使用Redis 我们…

OpenCompass 大模型评测

OpenCompass 大模型评测 关于测评的三个问题为什么需要测评&#xff1f;我们需要评测什么&#xff1f;怎么测试大预言模型&#xff1f; 主流大模型评测框架OpenCompass能力框架OpenCompass评测流水线设计 随着人工智能技术的快速发展&#xff0c; 大规模预训练自然语言模型成为…

3.RHCSA脚本配置及通过node2改密码

运行脚本发现node2不成功 脚本破解 选第二个 Ctrl x 换行 破解成功后做node2的改密码题 回到redhat, 发现检测程序检测密码题成功,得了8分.

《WebKit 技术内幕》之八(1):硬件加速机制

《WebKit 技术内幕》之八&#xff08;1&#xff09;&#xff1a;硬件加速机制 1 硬件加速基础 1.1 概念 这里说的硬件加速技术是指使用GPU的硬件能力来帮助渲染网页&#xff0c;因为GPU的作用主要是用来绘制3D图形并且性能特别好&#xff0c;这是它的专长所在&#xff0c;它…

Spring Boot 集成 API 文档 - Swagger、Knife4J、Smart-Doc

文章目录 1.OpenAPI 规范2.Swagger: 接口管理的利器3.Swagger 与 SpringFox&#xff1a;理念与实现4.Swagger 与 Knife4J&#xff1a;增强与创新5.案例&#xff1a;Spring Boot 整合 Swagger35.1 引入 Swagger3 依赖包5.2 优化路径匹配策略兼容 SpringFox5.3 配置 Swagger5.4 S…

快速转换,让图片瞬间变成Excel表格!

摘要&#xff1a;本文将带你探索将图片转换为Excel表格的可行性和方法。通过对一些流行的数据处理软件进行测试&#xff0c;我们发现Photoshop和Excel可以轻松地将图片转换为Excel表格。此外&#xff0c;我们还比较了不同软件之间的差异&#xff0c;并提供了一些建议&#xff0…

docker搭建hbase 全部流程(包含本地API访问)

一、使用docker下载并安装hbase 1、搜索&#xff1a;docker search hbase 2、下载&#xff1a;docker pull harisekhon/hbase&#xff08;一定要下载这个&#xff0c;下面都是围绕此展开的&#xff09; 3、启动容器&#xff1a; docker run -d -p 2181:2181 -p 16000:16000…

做一个简单的倒计时

<div>距离过年还有:<span></span></div><script>let div document.querySelector("div");let span document.querySelector("span");// 获取未来时间戳let future new Date("2024-2-10 00:00:00");// 获取当下…

Midjourney V6有多厉害,看完这27张图你就明白了!

一些结论 当前V6版本仍处于Alpha测试阶段&#xff1a;这意味着产品的某些方面可能会发生变化。 更准确地遵循提示指令&#xff1a;V6在遵循用户的提示指令方面更为准确&#xff0c;特别是对于较长的提示指令。 模型更加连贯&#xff1a;新版本的模型在生成图像时展现出更高的…

SpringBoot+Email发送邮件

引言 邮件通知是现代应用中常见的一种通信方式&#xff0c;特别是在需要及时反馈、告警或重要事件通知的场景下。Spring Boot提供了简单而强大的邮件发送功能&#xff0c;使得实现邮件通知变得轻而易举。本文将研究如何在Spring Boot中使用JavaMailSender实现邮件发送&#xf…

Hypervisor 和Docker 还有Qemu有什么区别与联系?

Hypervisor Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层&#xff0c;可以让多个操作系统和应用共享硬件资源&#xff0c;也叫做虚拟机监视器&#xff08;VMM&#xff09;。 Hypervisor有两种类型&#xff1a;Type I和Type II。 Type I 直接运行在硬件上&a…

如何用“VMware安装Ubuntu”win11系统?

一、 下载Ubuntu 企业开源和 Linux |Ubuntu的 二、 安装 三、 启动虚拟机 选中Try or Install Ubuntu Server&#xff0c;按回车

PY调包侠——Collections高效库

一、【写在前面】 PY是一个调包侠语言&#xff0c;多学一个库可以提高计算速度。Collections提供了各种数据类型和集合工具&#xff0c;可以很方便的处理各种数据结构。如果您有刷力扣的习惯&#xff0c;可以经常看到Collections和itertools的身影&#xff0c;经常用这两个可以…

阿里云 SAE 2.0 正式商用:极简易用、百毫秒弹性效率,降本 40%

作者&#xff1a;黛忻 本文主要介绍阿里云 Serverless 应用引擎&#xff08;以下简称 SAE &#xff09;如何帮助企业跨越技术鸿沟&#xff0c;从传统应用架构无感升级到 Serverless 架构&#xff0c;以更高效、更经济的方式进行转型&#xff0c;快速进入云原生快车道&#xff0…

牛客周赛 Round 29 解题报告 | 珂学家 | 博弈概率DP

前言 整体评价 F题真心好题&#xff0c;很典&#xff0c;学到了很多。D题用了对顶堆&#xff0c;写到一半就想到了更简单的方法&#xff0c;哭。E题是基于众数的构造。 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 小红大战小紫 思路: 模拟 n, m list(map(…

Qt6入门教程 9:QWidget、QMainWindow和QDialog

目录 一.QWidget 1.窗口和控件 2.事件 二.QMainWindow 三.QDialog 1.模态对话框 1.1模态对话框 1.2.半模态对话框 2.非模态对话框 在用Qt Creator创建Qt Widgets项目时&#xff0c;会默认提供三种基类以供选择&#xff0c;它们分别是QWidget、QMainWIndow和QDialog&am…

ChatGPT五大教育潜能与四大教育风险

关于ChatGPT将对学校教育产生何种影响&#xff0c;教育界尚未达成共识。这在很大程度上反映了人们审视ChatGPT教育潜能时所采取的不同视角和立场。如果我们从前面提及的生态视角和学习者发展立场来看&#xff0c;ChatGPT可以与学习者之间建立协作、共生和进化的良性生态关系&am…

【Unity】AB包下载

【Unity】AB包下载 1.使用插件打AB包 a.AB包分类 一般地&#xff0c;将预制体作为AB包资源&#xff0c;不仅需要对预制体本身进行归类&#xff0c;还要对其涉及的动画&#xff08;AnimationClip&#xff09;、动画状态机&#xff08;AnimatorController&#xff09;、以及所…

7、机器学习中的数据泄露(Data Leakage)

找到并修复这个以微妙的方式破坏你的模型的问题。 数据泄露这个概念在kaggle算法竞赛中经常被提到,这个不同于我们通常说的生活中隐私数据暴露,而是在竞赛中经常出现某支队伍靠着对极个别feature的充分利用,立即将对手超越,成功霸占冠军位置,而且与第二名的差距远超第二名…