Java 位运算(移位、位与、或、异或、非)

基于YOLOv5的隧道衬砌缺陷智能检测系统 计算机视觉在工程检测领域正发挥越来越重要的作用,特别是目标检测技术通过深度学习算法实现了对复杂场景的智能分析。YOLOv5作为当前主流的目标检测框架,通过改进网络结构和训练策略,可以显著提升检测精度和效率。在隧道工程领域,结合通道注意力机制和多尺度特征融合技术,能够有效解决衬砌缺陷识别中的小目标检测难题。这种AI检测系统相比传统人工判读地质雷达图像,不仅将效率提升20倍,还能将识别准确率提高到92.3%,特别适用于3cm以上结构缺陷的自动化检测。系统通过深度可分离卷积等优化,实现了模型轻量化,便于在边缘计算 阅读详情

Java提供的位运算符有:左移( << )、右移( >> ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ ),除了位非( ~ )是一元操作符外,其它的都是二元操作符。

1、左移( << )

Test1、将5左移2位:

public class Test {  
    public static void main(String[] args) {  
        System.out.println(5<<2);//运行结果是20  
    }  
}  

运行结果是20,但是程序是怎样执行的呢?
首先会将5转为2进制表示形式(java中,整数默认就是int类型,也就是32位):

0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:

0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20

2、右移( >> ) ,右移同理,只是方向不一样罢了(感觉和没说一样)

System.out.println(5>>2);//运行结果是1  

还是先将5转为2进制表示形式:
0000 0000 0000 0000 0000 0000 0000 0101 然后右移2位,高位补0:
0000 0000 0000 0000 0000 0000 0000 0001

3、无符号右移( >>> )
我们知道在Java中int类型占32位,可以表示一个正数,也可以表示一个负数。正数换算成二进制后的最高位为0,负数的二进制最高为为1

例如 -5换算成二进制后为:

1111 1111 1111 1111 1111 1111 1111 1011 (刚开始接触二进制时,不知道最高位是用来表示正负之分的,当时就总想不通。。明明算起来得到的就是一个正数-_-)

我们分别对5进行右移3位、 -5进行右移3位和无符号右移3位:

public class Test {  
    public static void main(String[] args) {  
        System.out.println(5>>3);//结果是0  
        System.out.println(-5>>3);//结果是-1  
        System.out.println(-5>>>3);//结果是536870911  
    }  
}  

我们来看看它的移位过程(可以通过其结果换算成二进制进行对比):

5换算成二进制: 0000 0000 0000 0000 0000 0000 0000 0101
5右移3位后结果为0,0的二进制为: 0000 0000 0000 0000 0000 0000 0000 0000 // (用0进行补位)

-5换算成二进制: 1111 1111 1111 1111 1111 1111 1111 1011
-5右移3位后结果为-1,-1的二进制为:
1111 1111 1111 1111 1111 1111 1111 1111 // (用1进行补位)
-5无符号右移3位后的结果 536870911 换算成二进制:
0001 1111 1111 1111 1111 1111 1111 1111 // (用0进行补位)

通过其结果转换成二进制后,我们可以发现,正数右移,高位用0补,负数右移,高位用1补,当负数使用无符号右移时,用0进行部位(自然而然的,就由负数变成了正数了)

注意:笔者在这里说的是右移,高位补位的情况。正数或者负数左移,低位都是用0补。(自行测试)

4、位与( & )

public class Test {  
    public static void main(String[] args) {  
        System.out.println(5 & 3);//结果为1  
    }  
}  

还是老套路,将2个操作数和结果都转换为二进制进行比较:
5转换为二进制:0000 0000 0000 0000 0000 0000 0000 0101

3转换为二进制:0000 0000 0000 0000 0000 0000 0000 0011


1转换为二进制:0000 0000 0000 0000 0000 0000 0000 0001

位与:第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0

5、位或( | )

public class Test {  
    public static void main(String[] args) {  
        System.out.println(5 | 3);//结果为7  
    }  
}  

5转换为二进制:0000 0000 0000 0000 0000 0000 0000 0101

3转换为二进制:0000 0000 0000 0000 0000 0000 0000 0011


7转换为二进制:0000 0000 0000 0000 0000 0000 0000 0111
位或操作:第一个操作数的的第n位于第二个操作数的第n位 只要有一个是1,那么结果的第n为也为1,否则为0

6、位异或( ^ )

public class Test {  
    public static void main(String[] args) {  
        System.out.println(5 ^ 3);//结果为6  
    }  
}  

5转换为二进制:0000 0000 0000 0000 0000 0000 0000 0101

3转换为二进制:0000 0000 0000 0000 0000 0000 0000 0011


6转换为二进制:0000 0000 0000 0000 0000 0000 0000 0110
位异或:第一个操作数的的第n位于第二个操作数的第n位 相反,那么结果的第n为也为1,否则为0

7、位非( ~ ) 位非是一元操作符

public class Test {  
    public static void main(String[] args) {  
        System.out.println(~5);//结果为-6  
    }  
} 

5转换为二进制:0000 0000 0000 0000 0000 0000 0000 0101

-6转换为二进制:1111 1111 1111 1111 1111 1111 1111 1010

位非:操作数的第n位为1,那么结果的第n位为0,反之。

由位运算操作符衍生而来的有:

&= 按位与赋值
|= 按位或赋值
^= 按位非赋值

= 右移赋值

= 无符号右移赋值
<<= 赋值左移

和 += 一个概念而已。

举个例子:

public class Test {  
    public static void main(String[] args) {  
        int a = 5  
        a &= 3;  
        System.out.println(a);//结果是1  
    }  
} 
efm32 入门.pdf 本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。 立即下载

相关推荐

Unity游戏开发实战:用柏林噪声打造3D随机地形(附完整C#代码)

本文详细介绍了如何在Unity游戏开发中使用柏林噪声算法生成3D随机地形,包含完整的C#代码实现。从基础柏林噪声原理到高级参数控制,再到性能优化和常见问题解决,帮助开发者掌握程序化地形生成技术,打造丰富多变的游戏世界。

weixin_29281941的博客 101

Java使用“移位”和“位或”运算,将int类型数字,生成指定长度二进制串

【代码】Java使用“移位”和“位或”运算,将int类型数字,生成指定长度二进制串。

weixin_42556267的博客 720

Zabbix-获取客户端的SNMP数据

网口状态(ifOperStatus)的 OID 是1.3.6.1.2.1.2.2.1.8,查询时需要用1.3.6.1.2.1.2.2.1.8.1(第 1 个网口)、1.3.6.1.2.1.2.2.1.8.2(第 2 个网口)等。表格对象是指 “包含多个同类实例的对象”(如设备的多个网口、多个进程等,每个实例需要单独标识)。在 SNMP 规范中,标量对象的完整 OID 必须以.0结尾,.0是标量对象的唯一实例编号。标量对象是指 “单一值的对象”(如设备的名称、温度、状态等,整个设备只需要一个值来表示)。

徐子元 1728

java异或值_关于异或值怎么计算

首先使用十六进制器打开微信dat文件,显示如下jpg图片文件头一般为FF D8 开头的,所以此处使用科学计算器,计算异或值计算后的值所以此处异或值就是0x9D代码以下是java代码,创建一个weChatImgRevert .class后复制进去就好啦。此处的jdk版本需要1.8以上…,另外三个参数需要改成自己的哦~package main.java.com.example.demo;import ...

weixin_32016633的博客 815

DAC8568控制器实战:如何用STM32实现多通道同步输出(附完整代码)

本文详细介绍了如何使用STM32微控制器驱动TI的DAC8568多通道DAC控制器,实现高精度的多通道同步模拟信号输出。内容涵盖硬件设计要点、SPI时序精准配置、驱动层命令构建,并重点解析了通过LDAC引脚实现同步更新的核心策略,提供了完整的代码框架和实战案例,帮助工程师快速解决多通道同步输出的工程难题。

weixin_29179311的博客 171

C# : 计算并输出这一天是这一年的第几天

C#之输入某年,然后输入某月,再输入某日,计算并输出这一天是这一年的第几天的功能算法

saitoDeng的博客 970

java中异或^运算符的应用

java中的运算符异或^,其运算符规则是:两个操作数的位中,相同则结果为0,不同则结果为1。应用 一个数与0异或,值为这个数 System.out.println(0^100); 结果为100 可以找出组数中没有重复的那个数 如: public class Demo1 { public static void main(String[] args) { int[] ar

minghai 3105

M6 Mac mini涨价2500值不值?深度拆解硬件成本与购买决策

统一内存架构将CPU、GPU和内存封装在一起,通过共享高带宽内存池提升数据交换效率,尤其适合本地AI推理和视频渲染等场景。在苹果生态中,起步内存和存储的配置直接决定设备生命周期,因为后期无法自行升级。M6 Mac mini将起步内存从16GB提升至24GB、存储从256GB提升至512GB,同时芯片制程和GPU核心数均有升级,持续负载性能保持率明显改善。对于开发者、内容创作者和本地大模型推理用户,这些变化能转化为实际效率收益;而轻度办公用户则可能面临性能冗余。理解硬件成本结构与自身工作流需求,才能判断这25

weixin_30846347的博客 267

按位与、或、异或等运算方法

按位与运算符(&amp;) 参加运算的两个数据,按二进制位进行“与”运算。 运算规则:0&amp;0=0;   0&amp;1=0;    1&amp;0=0;     1&amp;1=1;        即:两位同时为“1”,结果才为“1”,否则为0 例如:3&amp;5  即 0000 0011 &amp; 0000 0101 = 0000 0001   因此,3&amp;5的值得...

cargoj的博客 7363

自助结账商品检测(Scanned Item Detection)——基于YOLOv8的RPC数据集实战

RPC数据集是由中国科学院自动化研究所发布的零售商品结账检测公开数据集,广泛用于自助结账和零售场景下的目标检测与识别。YOLOv8是YOLO系列最新版本,由Ultralytics推出,继承了YOLO家族的高效快速和高准确性,适用于实时检测场景。本文系统介绍了基于YOLOv8的RPC数据集自助结账商品检测方案,涵盖数据准备、训练、推理及UI界面设计。未来,可结合多模态感知、RFID融合技术,打造更加智能和稳定的自助结账系统。

YOLO 251

HTML小游戏20 —— html5版开心斗地主小游戏(附完整源码)

100个H5游戏专栏🎮 目前已有100+小游戏,源码在持续更新中,前100位订阅限时优惠,先到先得。🐬 订阅专栏后可阅读100个HTML小游戏文章;还可私聊进前端/游戏制作学习交流群;领取一百个小游戏源码。在线演示地址:源码也可在文末进行获取。

前端好玩的小案例、游戏、工具 1万+

java位运算 异或_Java 位运算(移位、位与、或、异或、非)

一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, 0表示正数, 1表示负数; (3).正数的原码, 反码, 补码都一样; (4).负数的反码=它的摘要:Java提供的位运算符有:左移( << )、右移( >> ) 、无符号...

weixin_33331021的博客 510

基于 Google Colab 的 mask rcnn 训练自己的数据集(以实例分割为例)

详细步骤1 数据集的制作1.1 数据标注1.2 生成数据集2 环境的搭建2.1 搭建流程2.2 注意事项(报错)3 开始训练4 可视化4.1 修改webcam.py文件4.2 进行可视化5 参考文章 1 数据集的制作 1.1 数据标注 使用 labelme=4.5.6 版本进行标注,标注文件指定到保存图片的路径下,也就是json文件和jpg文件放在同一个文件夹里 1.2 生成数据集 先手动划分训练集和测试集(包括图像和标注文件),然后分别整合它们的标注信息,参考代码:1_ships_to_coco.py

G果的博客 8002

Java中的位运算,包括移位、位与、或、异或、非

Java中的位运算包括:左移( > ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ ), 特别注意:除了位非( ~ )是一元操作符外,其它的都是二元操作符。并且在进行位运算的时候,例如a&b操作,都需要首先把a和b转换成二进制再进行操作 1.位与(&) 规则:a&b,先把十进制数a b都转换为二进制数,&的运算规则是:第一个操作数a的第n位与

kuangsonghan的博客 423

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java 位运算(移位、位与、或、异或、非)学习

位运算

pip的博客 569

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java中位运算(移位、位与、或、异或、非)

public class Test { public static void main(String[] args) { // 1、左移( << ) // 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0:// // 0000 0000 0000 0000 0000 0000 0001

zhangjinru123的博客 432

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

java 加法用移位_Java 位运算(移位、位与、或、异或、非)

Java提供的位运算符有:左移( <>) 、无符号右移(>>>) 、位与(&)、位或( |)、位非(~)、位异或(^),除了位非( ~ )是一元操作符外,其它的都是二元操作符。1、左移( <Test1、将5左移2位:packagecom.xcy;publicclassTest{publicstaticvoidmain(String...

weixin_39852688的博客 471

java位运算 位与_Java 位运算(移位、位与、或、异或、非)

Java提供的位运算符有:左移( <>) 、无符号右移(>>>) 、位与(&)、位或( |)、位非(~)、位异或(^),除了位非( ~ )是一元操作符外,其它的都是二元操作符。1、左移( <Test1、将5左移2位:packagecom.xcy;publicclassTest{publicstaticvoidmain(...

weixin_35991051的博客 104

Java位运算符详解(移位、位与&、或|、非~、异或^)

位运算是对操作数以二进制为单位进行的操作和运算,运算结果为整数。位运算符包括:“&”、“|”、“~”、“^”和移位运算符“>>”、“<<”、“>>>”,7个位运算符。按位与的运算符用符号“&”表示,按位与参与运算的数字,低位对齐,高位不足的补0,当对应的二进制位都为1时,计算结果才为1,否则都为,由此可看出,任何数与0按位与运算,其结果都为0。按位或的运算符用符号“|”表示,按位或参与运算的数字,低位对齐,高位不足的补0。只要对应的二进制位有一个为1,那么结果就为1,否则都为0。

moiho的博客 4190
上一篇: JAVA高效读取大文件
下一篇: Java正则表达式之截取字符串
赖波0795
博客等级 码龄12年 11粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值