[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.mzph.cn/news/640470.shtml

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

相关文章

蓝桥杯官网填空题(奇怪的分式)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 上小学的时候&#xff0c;小明经常自己发明新算法。一次&#xff0c;老师出的题目是&#xff1a;1/4乘以8/5 小明居然把分子拼接在一起&#xff0c;分母拼接在一起&…

基于SpringBoot的高校学科竞赛平台管理系统

基于SpringBoot的高校学科竞赛平台管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台界面 管理员界面 教师界面 学生界面 摘要 本文详细介绍了一款基于…

革新区块链:代理合约与智能合约升级的未来

作者 张群&#xff08;赛联区块链教育首席讲师&#xff0c;工信部赛迪特聘资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09;关注张群&#xff0c;为您提供一站式区块链技术和方案咨询。 代理合约&#xff08;Prox…

开源项目_大模型应用_Chat2DB

1 基本信息 项目地址&#xff1a;https://github.com/chat2db/Chat2DBStar&#xff1a;10.7K 2 功能 Chat2DB 是一个智能且多功能的 SQL 客户端和报表工具&#xff0c;适用于各种数据库。 对于那些平时会用到数据库&#xff0c;但又不是数据库专家的程序员来说&#xff0c;…

盘点几种有线扩展Wifi覆盖范围方式的优缺点

前言 前几天小白到一个朋友的家里&#xff0c;发现她家的主路由是放在玄关的。 这个方式就导致了她家三个卧室的Wifi信号都很弱。 她叫我过去帮忙弄一下网络的问题&#xff0c;这个对于有一点电脑知识的小伙伴来说&#xff0c;基本上不是什么难事&#xff0c;因为每个房间基本…

AVL树底层实现

目录 AVL树简介 AVL树节点定义​编辑 AVL树特性 AVL树的建立 AVL树的插入 AVL树的旋转 验证AVL树 AVL树的实现&#xff08;代码部分&#xff09; AVL树简介 AVL树是对二叉搜索树的改进&#xff0c;二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序…

PDsehell16连接pgsql出现“Could not initialize JavaVM“时的解决步骤

问题原因:PowerDesigned16是32位的&#xff0c;只能使用32位的JDK来运行JDBC驱动 解决方案&#xff1a; 一、弄一个32为jdk的免安装包 二、 接下来就是配置系统环境变量了&#xff08;注意是系统不是用户环境变量&#xff09; JAVA_HOME配置刚刚32位的存放地址&#xff0c; …

(二十四)Kubernetes系列之Helm3

Helm为kubernetes的包管理工具&#xff0c;就像Linux下的包管理器&#xff08;yum/apt等&#xff09;&#xff0c;可以很方便的将之前打包好的yaml文件部署到kubernetes上。 1.安装访问地址&#xff1a;https://github.com/helm/helm/releases 点击查看最新的版本&#xff0c…

文件操作与IO(3)

文件内容的读写--数据流 这里我们将要讲到文件操作中的重要概念--流. 之前也在C语言讲解中提到了文件流的概念---读写文件内容 分为这几步:(1)打开文件;(2)读/写文件;(3)关闭文件. 数据流主要分为字节流和字符流. 字节流:以字节为单位进行读写(代表:InputStream,OutputStrea…

【Java网络编程01】网络原理初识

【Java网络编程01】网络原理初识 1. 网络通信基础概念 网络通信&#xff1a;网络互连的目的就是网络通信&#xff0c;即网络数据传输&#xff0c;再直白点而言就是不同主机的不同进程之间基于网络进行数据的传输交互。 那么&#xff0c;在组建的网络上有各种各样的主机&#…

Python量化交易- mplfinance库 -画K线图

mplfinance库 1. mplfinance 模块说明2. mplfinance安装3. mplfinance 模块 plot 基本用法参数typestylemake_addplot设置图表颜色 make_marketcolors添加图表样式 make_mpf_style 4. mplfinance 的基本K线图实现自定义风格和颜色图表尺寸调整、相关信息的显示添加完整移动平均…

Vue 实例创建流程

✨ 专栏介绍 在当今Web开发领域中&#xff0c;构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架&#xff0c;正是为了满足这些需求而诞生。它采用了MVVM架构模式&#xff0c;并通过数据驱动和组件化的方式&#xff0c;使…

CentOs7 安装Mysql(5.7和8.0版本)密码修改跳过 超详细教程

CSDN 成就一亿技术人&#xff01; 今天出一期Centos下安装Mysql&#xff08;详细教程&#xff09;包括数据库密码跳过修改 CSDN 成就一亿技术人&#xff01; 目录 1.获取安装包 2.安装程序 安装下载的rpm包 查看安装包 修改5.7版本&#xff08;重要&#xff09; 安装M…

设置代码模板创建sql映射文件、Mybatis主配置文件

目录 1、Sql映射&#xff08;Sql Mapper&#xff09;文件的介绍 2、Mybatis的主配置文件的介绍 3、通过代码模板创建Sql映射文件 4、通过代码模板创建Mybatis主配置文件 1、Sql映射&#xff08;Sql Mapper&#xff09;文件的介绍 <?xml version"1.0" encod…

太太二字的由来?

“太太”这个称谓的由来可以追溯到周朝时期的“周室三母”。这三位贤妃分别是太姜、太任和太姒。她们以母仪天下的德范&#xff0c;养育和辅佐了开创太平盛世的数位君王&#xff0c;成为了夫君的良佐、胎教的典范。因此&#xff0c;后世尊称别人的妻子为“太太”&#xff0c;以…

13.XXL-JOB应用

XXL-JOB应用 1.介绍 XXL-JOB是大众点评员工徐雪里于2015年发布的分布式任务调度平台 2.XXL-JOB与Quartz的关系 老版本依赖Quartz的定时任务触发&#xff0c;在V2.1.0版本开始移除了Quartz 3.官方地址 官方文档&#xff1a;https://www.xuxueli.com/xxl-job/gitee&#xf…

面试经典 150 题 - 多数元素

多数元素 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1&#xff1a; 输入&#xff1a;nums [3,2,3] 输出&#xff1…

搜索引擎优化:利用Python爬虫实现排名提升

什么是搜索引擎优化&#xff08;SEO&#xff09; 搜索引擎优化&#xff08;SEO&#xff09;是通过优化网站内容和结构&#xff0c;提高网站在搜索引擎中的排名&#xff0c;从而增加网站流量和曝光度的技术和方法。SEO的目标是使网站在搜索引擎结果页面中获得更高这个过程包括吸…

windows11上安装虚拟机VMware

1、安装虚拟机&#xff08;待补充&#xff09; 第二步&#xff1a;安装VMware tools 实现windows文件上传到虚拟机中 1、安装好虚拟机后&#xff0c;查看虚拟机ip用Xshell连接虚拟机&#xff0c;并安装VMware tools(只有安装了VMware tools才能实现虚拟机和本机的文件共享。在…

python:socket基础操作(2)-《udp发送信息》

基础发送udp信息 1.导入socket模块 2.使用udp模块 3.发送内容 4.关闭套接字 很简单的4步就可以实现udp的消息发送 import socket # 导入模块udp_socket socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 使用ipv4 udp协议udp_socket.sendto(b"hello world",(&…