Java中的逻辑运算符/移位运算符简单总结

news/2024/4/20 9:17:30/文章来源:https://blog.csdn.net/qq_40903378/article/details/129162629

前段时间刷到了力扣关于位运算的题,这里浅浅记录一下!

1. 逻辑位运算

1.1 与 &

&:按位与进行二进制计算,规则是同为1则为1,不同为0,具体如下:

0&0=0, 0&1=0, 1&0=0, 1&1=1

要对所有的条件都进行判断操作,如a = 1 & 2,结果a = 0,也相当于求每位的进位数,如9 & 1 = 1。
注意:
还有一种相似的与逻辑运算符, &&,称为逻辑与,也称短路与,只要第一个条件不满足,后面条件就不再判断;如a = 1 > 0&& 2 < 1,结果a = false。

1.2 或 |

|:按位或二进制计算,规则是同为0则为0,否则为1,具体如下:

0&0=0, 0&1=1, 1&1=1, 1&1=1

要对所有的条件都进行判断,如a = 3|5,结果a = 7。
注意:
还有一种相似的或逻辑运算符 ||:称为逻辑或,也称短路或,仅需要其中一个条件满足即可,其它条件就不再判断,如 a = 2 > 0 || 3 > 1,结果a = true。

1.3 非

****:按位进行取反进行二进制计算,规则是1取反为0,0取反为1,如37 = -38,具体计算如下:

在Java中,int 占四个字节,一个字节占8bit位,即32位,32bit.
37转为二进制是:100101.
计算机保存的都是补码,37是正数,他的原码,反码,补码都是一样的;
37在计算机中的补码:
00000000 00000000 00000000 00100101
~37的计算:
A.求37在计算中补码的相反码(不是反码),这里还是补码只是相反的补码
11111111 11111111 11111111 11011010
B:将相反的补码,转换为原码,由于相反码的第一个位是1,这个数是负数,负数的补码转反码 减一(-1)
11111111 11111111 11111111 11011010 -1
= 
11111111 11111111 11111111 11011001
反码转原码:符号位不变,其他数相反
10000000 00000000 00000000 00100110
二进制100110十进制38
符号位不变-38

注意:
还有一种相似的运算符 :称为逻辑非,对当前结果取反即可,具体如下:

!1 = 0, !0 = 1

!false = true, !true = false

1.4 异或

符号为^, 规则是相同为0,不同为1,具体如下:

1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0

相当于无进位的求和,不考虑进位,如 1 ^ 2 = 3,即001 ^ 010 = 011;19 ^ 1 = 10。

2. 移位运算符

2.1左移运算符<<

  • 运算规则是:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
  • 若移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动33位,实际上只移动了1位。
  • 语法格式:需要移位的数字number << 移位的次数,如5 << 1,相当于5乘以2的1次幂,结果为10。
  • 数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

2.2 右移运算符>>

  • 运算规则是:按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。
  • 若移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int型移动33位,实际上只移动了1位。
  • 语法格式:需要移位的数字number >> 移位的次数,如4 >> 1,相当于4乘以2的1次幂,结果为2。
  • 数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。

2.3 无符号右移 >>>

  • 运算规则是:按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),高位的空位补符号位0,忽略了符号位扩展,即不管是正数还是负数都补0。
  • 语法格式:需要移位的数字number >>> 移位的次数。
  • 只是对32位和64位的值有意义。

3. 小知识

3.1 判断某二进制数n最低(右)位1或者0

  • 若 n & 1 = 0,则 n二进制数n最右一位 为 0;
  • 若 n & 1 = 1,则 n二进制数n最右一位 为 1;
    可用于题目:判断所给数字转换为二进制数中1的个数

3.2 二进制数n最低(右)位1变为0

  • n&(n−1): 二进制数n最右边为1,n-1最右边则为0;
  • n>>>1 :直接对二进制数n进行无符号右移1位

3.3 不使用运算符+求两数和

  • 先用异或运算进行无进位求和,即 a^b;
  • 再用与运算进行处理每次进位并左移一位,即(a &b) << 1;
  • 两者用异或运算求和,即(a^b) ^ ((a &b) << 1);
  • 重复上述过程,直到进位为0即可;

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

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

相关文章

Docker 如何配置镜像加速

Docker 镜像加速 国内从 DockerHub 拉取镜像有时会遇到困难&#xff0c;此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务&#xff0c;例如&#xff1a; 科大镜像&#xff1a;https://docker.mirrors.ustc.edu.cn/网易&#xff1a;https://hub-…

代码随想录【Day21】| 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先

530. 二叉搜索树的最小绝对差 题目链接 题目描述&#xff1a; 给你一棵所有节点为非负值的二叉搜索树&#xff0c;请你计算树中任意两节点的差的绝对值的最小值。 示例&#xff1a; 提示&#xff1a;树中至少有 2 个节点。 难点&#xff1a; 解答错误&#xff01;仅考虑了…

【Npde.js】express以及nodemon

express初始Express什么是Express不使用Express可以创建web服务器吗&#xff1f;Express能做什么安装Express监听GET请求和post请求获取URL中携带的查询参数获取URL中携带的动态参数托管静态资源nodemon为什么使用nodemon初始Express 什么是Express 官方给出的概念&#xff0…

Vue3 基础

Vue3 基础 概述 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&…

Java:Java与Python — 编码大战

Java和Python是目前市场上最热门的两种编程语言&#xff0c;因为它们具有通用性、高效性和自动化能力。两种语言都有各自的优点和缺点&#xff0c;但主要区别在于Java 是静态类型的&#xff0c;Python是动态类型的。它们有相似之处&#xff0c;因为它们都采用了“一切都是对象”…

单片机输入输出模式

单片机输入输出模式输入模式模拟输入、浮空输入、上拉输入、下拉输入GPIO输出模式推挽输出、开漏输出、复用推挽输出、复用开漏输出。上下拉电阻上拉电阻下拉电阻输入模式 模拟输入、浮空输入、上拉输入、下拉输入 模拟输入&#xff1a;I/O端口的模拟信号&#xff08;电压信号…

日志收集笔记(架构设计、Log4j2项目初始化、Lombok)

1 架构设计 ELK 技术栈架构设计图&#xff1a; 从左往右看&#xff0c; Beats&#xff1a;主要是使用 Filebeat&#xff0c;用于收集日志&#xff0c;将收集后的日志数据发送给 Kafka&#xff0c;充当 Kafka 的生产者Kafka&#xff1a;高性能消息队列&#xff0c;主要起缓冲…

关于客户背景调查的两个案例,说下我的真实看法

这篇文章我只是想客观陈述下事实&#xff0c;并没有对他人的贬低与对自己的吹捧之意。只是想通过这样两件小事&#xff0c;传递出来一个观点&#xff1a;在外贸业务开发过程中&#xff0c;很多时候正是那些我们内心抗拒&#xff0c;不愿意沉下心去做的事&#xff0c;才给了我们…

C#与三菱PLC MC协议通信,Java与三菱PLC MC协议通信

三菱PLC的MC协议是一种常用的通信协议&#xff0c;用于实现三菱PLC与其他设备之间的通信。以下是一些关于MC协议的基本信息&#xff1a;协议格式MC协议的通信数据格式如下&#xff1a;数据头网络编号PC编号目标模块IO编号目标模块站号本机模块IO编号本机模块站号请求数据长度请…

嵌套走马灯Carousel

Carousel 的应用很广泛&#xff0c;基础用法这里不多做阐述&#xff0c;感兴趣的可以去element-gui了解Carousel 组件。 今天主要是梳理嵌套走马灯的逻辑&#xff0c;背景如下&#xff1a; 需要对项目做一个展示&#xff0c;项目可能有一个或多个&#xff0c;同时一个项目可能…

初探 qiling ( 麒麟 ):开源的二进制分析、高级代码模拟框架

官方介绍&#xff1a; 官网&#xff1a;https://qiling.io/&#xff1a;https://twitter.com/qiling_iogithub 地址&#xff1a;https://github.com/qilingframework/qiling 1、qiling 简介 qiling 是什么 qiling 基于 python 开发&#xff0c;是一个开源的、可模拟多种架构…

Web前端:全栈开发人员的责任

多年来&#xff0c;关于全栈开发人员有很多说法&#xff0c;全栈开发人员是一位精通应用程序全栈开发过程的专业人士。这包括数据库、API、前端技术、后端开发语言和控制系统版本。你一定遇到过前端和后端开发人员。前端开发人员将构建接口&#xff0c;而后端开发人员将开发、更…

狂神说:方法

何为方法方法是语句和集合&#xff0c;一起执行一个功能【实际上方法就是函数&#xff0c;说法不一样而已】定义方法加了static才能被main方法调用修饰符&#xff08;public static&#xff09; 返回类型 方法名&#xff08;参数类型 参数名&#xff09;// main方法public stat…

vscode SSH 保存密码自动登录服务器

先在win local上拿到秘钥&#xff0c;然后再把这秘钥copy 进服务器 1. 创建 RSA 密钥对 第一步是在客户端机器&#xff08;通常是您的计算机 win 10&#xff09;上创建密钥对&#xff1a;打开powershell, 输入 ssh-keygen默认情况下ssh-keygen将创建一个 2048 位 RSA 密钥对…

“双碳”目标下二氧化碳地质封存技术应用前景及模型构建实践方法与讨论

我国二氧化碳地质封存技术起步较晚&#xff0c;目前仍没有一套相对完整的行业规范&#xff1b;且就该技术而言&#xff0c;涉及环节众多&#xff0c;理论相对复杂&#xff0c;对于行业的新入局者不太友好。因此&#xff0c;结合时代背景&#xff0c;我们首次尝试对二氧化碳地质…

nodejs出现require is not defined和__dirname is not define 错误

参阅此&#xff0c; Cesium环境搭建成功和初步看一下它的示例_bcbobo21cn的博客-CSDN博客 运行Cesium入门示例&#xff0c;出现下图错误&#xff0c;根据资料&#xff0c;这是node版本的问题&#xff1b; 解决方法是&#xff0c;在server.js头部加入&#xff0c; import { cre…

Flink04: Flink核心API之DataStream

一、Flink 4种不同层次的API Flink中提供了4种不同层次的API&#xff0c;每种API在简洁和易表达之间有自己的权衡&#xff0c;适用于不同的场景。目前上面3个会用得比较多。 • 低级API(Stateful Stream Processing)&#xff1a;提供了对时间和状态的细粒度控制&#x…

Endless lseek导致的SQL异常

最近碰到同事咨询的一个问题&#xff0c;在执行一个函数时&#xff0c;发现会一直卡在那里。 strace抓了下发现会话一直在执行lseek&#xff0c;大致情况如下&#xff1a; 16:13:55.451832 lseek(33, 0, SEEK_END) 1368064 <0.000037> 16:13:55.477216 lseek(33, 0, SE…

linux下安装mongoDB

一、下载mongoDB包 下载地址&#xff1a; https://www.mongodb.com/try/download/community 个人建议&#xff1a;如果是学习阶段&#xff0c;使用5以下版本更好些。 二、安装及配置 1、安装 # 1、解压 $ tar -zxvf mongodb-linux-x86_64-rhel70-4.4.19-rc1.tgz# 2、迁移目…

【音视频处理】为什么MP3不是无损音乐?音频参数详解,码率、采样率、音频帧、位深度、声道、编码格式的关系

大家好&#xff0c;欢迎来到停止重构的频道。上期我们讨论了视频的相关概念&#xff0c;本期我们讨论音频的相关概念。包括采样率、码率、单双声道、音频帧、编码格式等概念。这里先抛出一个关于无损音频的问题。为什么48KHz采样率的.mp3不是无损音乐 &#xff0c;而48KHz采样率…