JAVA经典百题之按位与运算符 ``的使用

当学习Java语言中的按位与运算符 & 时,需要理解其用途、应用场景、示例源代码以及相应的注意事项。以下是一篇关于Java语言按位与运算符的详细文章,包括示例源代码和注释。

Java语言中的按位与运算符 &

按位与运算符 & 是Java语言中用于对二进制位进行逐位逻辑与操作的重要工具。它的主要功能是根据操作数的位来执行位级操作。本文将介绍按位与运算符的各种应用场景、示例源代码以及相关注意事项。

应用场景

1. 位掩码(Bitmask)应用

位掩码是按位与运算的常见应用场景,它用于设置、保留和检查特定位的状态。下面是一个权限管理的示例,使用位掩码来控制读取、写入和执行权限:

public class BitwiseAndExample {// 定义权限位的位掩码static final int READ_PERMISSION = 0b001;static final int WRITE_PERMISSION = 0b010;static final int EXECUTE_PERMISSION = 0b100;public static void main(String[] args) {// 初始权限:不允许读、写、执行int permissions = 0;// 启用写权限permissions = permissions | WRITE_PERMISSION;if ((permissions & READ_PERMISSION) != 0) {System.out.println("可以读取文件");} else {System.out.println("不允许读取文件");}if ((permissions & WRITE_PERMISSION) != 0) {System.out.println("可以写入文件");}if ((permissions & EXECUTE_PERMISSION) != 0) {System.out.println("可以执行文件");} else {System.out.println("不允许执行文件");}}
}

2. 检查特定位

按位与运算可用于检查一个整数中的特定位是否被设置为1。这对于检查标志位或状态非常有用。

public class BitwiseAndExample {public static void main(String[] args) {int num = 0b11011011;   // 二进制表示int checkBit = 0b00000100;  // 检查第3位if ((num & checkBit) != 0) {System.out.println("第3位已设置为1");} else {System.out.println("第3位未设置为1");}}
}

3. 数据掩码

按位与运算可用于提取整数中的特定位,从而获取有用的信息。这对于处理设备寄存器或读取传感器数据时非常有用。

public class BitwiseAndExample {public static void main(String[] args) {int sensorData = 0b11011010;   // 传感器数据// 使用掩码提取低4位int lowNibble = sensorData & 0b00001111;System.out.println("低4位数据:" + Integer.toBinaryString(lowNibble));}
}

注意事项

1. 了解位操作规则

按位与操作的规则是,只有对应的位中都为1时,结果才为1,否则为0。

2. 数据类型

Java的按位与运算符可以用于整数数据类型(如int、long、byte等)。确保操作数的数据类型相同,以避免类型转换错误。

3. 位操作优先级

按位与操作符的优先级较低,因此需要小心使用括号,以明确操作的执行顺序。

按位与运算符是Java语言中非常强大且有用的工具,可用于控制权限、状态检查、位提取等多种情况。熟练掌握这些概念和技巧对于处理二进制数据非常重要。希望本文的示例代码和注释有助于你更好地理解和应用按位与运算符。

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

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

相关文章

Qt之submodule编译

工作中会遇到这样一种情况:qt应用程序在运行时提示找不到某个qt的动态库。我遇到的是缺少libQt5Websocket.so,因为应用程序是在x86平台银河麒麟v10上开发,能够正常编译运行,然后移植到rk3588(aarch64架构)上…

文心大模型写——网课点播系统(项目需求)

参考文心大模型写TodoList项目需求 输入 你是一名资深的互联网软件行业产品经理。 现在要设计一个"网课点播系统"项目,它有哪些功能和需求? 分条目写出需求大纲。 输出 设计一个"网课点播系统"项目需要考虑以下功能和需求: 课程管理 课程…

刚参加工作的表弟问我如何设计一个表

文章目录 以公司表模版为基础,确定表名,固定字段不要给字段或者表设置字符集用业务主键还是自增主键创建时间,更新时间要不要使用数据库默认的时间 表弟能问出这个问题,表哥是吃惊又欣慰。吃惊是年纪轻轻的小伙子竟然知道设计表的…

NeuroImage | 右侧颞上回在语义规则学习中的作用:来自强化学习模型的证据

在现实生活中,许多规则的获取通常需要使用语言作为桥梁,特别是语义在信息传递中起着至关重要的作用。另外,个体使用的语言往往具有明显的奖励和惩罚元素,如赞扬和批评。一种常见的规则是寻求更多的赞扬,同时避免批评。…

【翻译】Efficient Data Loader for Fast Sampling-Based GNN Training on Large Graphs

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 此内容为机器翻译的结果,若有异议的地方,建议查看原文。 机器翻译的一些注意点,比如: 纪元、时代 > epoch工人 > worker火车、培训、训练师 > train Effic…

c# 弹出背景透明图

1. 在窗体中添加 picturebox 控件 2. 在 picturebox 中添加 “png ” 背景透明图,或者GIF图,属性设置如下 3. 在窗体初始化中,添加如下代码 this.BackColor Color.LimeGreen; this.TransparencyKey Color.LimeGreen; 此功能可以用来展示…

只出现一次的数字Ⅱ

题目:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题解:对数组进行排序,排序后循环判断当前子元素与前后子元素是否相等,不相等即为只出现一次的数字 代码: public int singleNumber(i…

【Vue面试题三十】、vue项目本地开发完成后部署到服务器后报404是什么原因呢?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:vue项目本地开发完成后部…

一卷到底,大明哥带你横扫 Netty

上一个死磕 Java 专栏【死磕 NIO】(当然写的不是很好,争取今年将它重写一遍)是**【死磕 Netty】**的铺垫,对于我们 Java 程序员而言,我们在实际开发过程一般都不会直接使用 Java NIO 作为我们的网络编程框架,因为写出一套高质量的…

基于和声优化的BP神经网络(分类应用) - 附代码

基于和声优化的BP神经网络(分类应用) - 附代码 文章目录 基于和声优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.和声优化BP神经网络3.1 BP神经网络参数设置3.2 和声算法应用 4.测试结果:5.M…

内网渗透——隧道代理

文章目录 代理代理使用场景VPS建立隧道frpMSF木马生成监听开启frp服务端和客户端执行exe木马文件 代理 实验环境: 攻击机kali:192.168.188.133(NAT模式) 模拟的公网服务器(本机):10.9.75.239 …

.locked勒索病毒的最新威胁:如何恢复您的数据?

引言: 在数字化的时代,.locked勒索病毒代表了数字安全面临的极大挑战。这篇文章将深入探讨.locked勒索病毒的威胁本质,以及如何在数据被加密的情况下恢复,同时提供了关键的预防措施。数据的重要性不容小觑,您可添加我…

国家开放大学 模拟 试题 训练

试卷代号:21 刑法学(2) 参考试题 一、选择题(每小题的备选答案中至少有一个是正确的,请将正确答案的序号字母填入题目括号内。多选、少选均不得分。每小题3分,共21分) 1.王某驾车时不小心将李某撞至马路边沿上&…

kube-controller-manager和kube-scheduler不能正常启动

kube-controller-manager-k8s-worker01和kube-scheduler-k8s-worker01没有启动起来 原因: 解决:进入/etc/kubernetes/manifests 编辑 将镜像地址修改为 然后重启kubelet:systemctl restart kubelet.service

freefilesync文件同步软件

下载 下载链接 https://freefilesync.org/download.php 往下拉,看到下载的链接 下载windows版本 下载地址: https://freefilesync.org/download/FreeFileSync_13.0_Windows_Setup.exe 直接复制到浏览器中访问就能下载 安装 双击安装包,一路默…

Megatron-LM GPT 源码分析(二) Sequence Parallel分析

引用 本文基于开源代码 https://github.com/NVIDIA/Megatron-LM ,延续上一篇Megatron-LM GPT 源码分析(一) Tensor Parallel分析 通过对GPT的模型运行示例,从三个维度 - 模型结构、代码运行、代码逻辑说明 对其源码做深入的分析。…

zookeeper应用场景(二)

单机环境下可以利用jvm级别的锁,比如synchronized、Lock等来实现锁,如果是多机部署就需要一个共享数据存储区域来实现分布式锁 一、分布式锁实现方式 1、基于数据库实现分布式锁 可以用数据库唯一索引来实现 2、基于redis实现分布式锁 redis实现的分…

【Vue面试题二十六】、SSR解决了什么问题?有做过SSR吗?你是怎么做的?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:SSR解决了什么问题&…

回归预测 | MATLAB实现IBES-ELM基于改进的秃鹰搜索优化算法优化极限学习机的数据回归预测(多指标,多图)

回归预测 | MATLAB实现IBES-ELM 基于改进的秃鹰搜索优化算法优化极限学习机的数据回归预测(多指标,多图) 目录 回归预测 | MATLAB实现IBES-ELM 基于改进的秃鹰搜索优化算法优化极限学习机的数据回归预测(多指标,多图&a…

变分自动编码器 (VAE)02/2 PyTorch 教程

一、说明 在自动编码器中,来自输入数据的信息被映射到固定的潜在表示中。当我们旨在训练模型以生成确定性预测时,这特别有用。相比之下,变分自动编码器(VAE)将输入数据转换为变分表示向量(顾名思义&#xf…