当前位置: 首页 > news >正文

别再被Java移位运算符坑了!一针见血讲透,看完直呼内行

Java中的位运算符全解

更新的时间是, 二零二二年, 零三月, 零二日, 十五时, 五十分钟, 零五秒 , 作者是, 小小茶花女。

主要针对大家这儿, 对Java里的位运算符予以了详尽介绍, 文中示例代码介绍得极为详细, 具备 的参考价值, 感兴趣的小伙伴们能够予以参考一番, 期望能够给你带来助力。

1. &(按位与运算符)

&按位与的运算规则是, 要把两边的数转变为二进制位, 接着运算最终值, 其运算规则就是(只有两个都为真才是真): 1&1的结果等于1, 1&0的结果等于0, 0&1的结果等于0, 0&0的结果等于0。

public class Main { public static void main(String[] args) { // &按位与,运算符两边的条件值会先转换为2进制,然后再比对运算 /** * 0 0 1 1 * 0 1 0 1 * ----------- * 0 0 0 1 */ int a = 3&5; /** * 0 0 0 1 * 0 0 1 0 * ----------- * 0 0 0 0 */ int b = 1&2; System.out.println(a);// 1 System.out.println(b);// 0 } }

2. |(按位或运算符)

按位或的计算方式是先把数转为二进制,然后进行计算, &按位与的计算方式同样是先转换为二进制再开展计算, 它们之间不一样的地方在于运算规则, 也就是一个为真那就为真, 具体体现为, 1|0等于1, 1|1等于1, 0|0等于0, 0|1等于1。

public class Main { public static void main(String[] args) { // |按位或,运算符两边的条件值会先转换为2进制,然后再比对运算 /** * 0 0 1 1 * 0 1 0 1 * ------------- * 0 1 1 1 */ int a = 3|5; /** * 0 0 0 1 * 0 0 1 0 * ------------- * 0 0 1 1 */ int b = 1|2; System.out.println(a);// 7 System.out.println(b);// 3 } }

3. ^(异或运算符)

异或运算符, 按其名思义, 异的意思是不同, 它的运算规则是, 1异或0等于1, 1异或1等于0, 0异或1等于1, 0异或0等于0。

public class Main { public static void main(String[] args) { /** * 0 0 1 1 * 0 1 0 1 * ------------- * 0 1 1 0 */ int a = 3^5; /** * 0 0 0 1 * 0 0 1 0 * ------------- * 0 0 1 1 */ int b = 1^2; System.out.println(a);// 6 System.out.println(b);// 3 } }

4. >>(无符号右移运算符)(1) 正数无符号右移

无符号右移运算符跟右移运算符的主要差别在于负数的运算, 由于无符号右移是高位添0, 移动多少位就添加多少个0。

对于十五这个数, 它所对应的二进制位呈现为零零零零一一一一 , 将其朝着右边移动两位之后得零零零零零零一一, 得出的最终结果是三。

public class Main { public static void main(String[] args) { /** * 0000 1111 * --------------- * 0000 0011 */ System.out.println(15>>>2); // 3 } }

(2) 负数无符号右移

- 6的二进制, 是6的二进制进行取反这样的操 作, 之后再加上1得到的结果。可以知道, 6的二进制是0 0 0000 0110, 将其取反, 然后加1, 得到的是1 1 1111 1010。接着, 对1 1 1111 1010进行右移三位的操作, 得到0 1 1111 1111。

public class Main { public static void main(String[] args) { System.out.println(-6>>>3); // 536870911 } }
http://www.jsqmd.com/news/1345437/

相关文章:

  • CYBITX保本跟单机制与动态风控算法解析
  • C++中#define与const的区别:从原理到代码实践详解
  • 驱动第二周
  • 2026上海局部改造避坑要点:8个关键问题必看,益鸟美居“闭口合同零增项”标准化做法值得借鉴 - 优家闲谈
  • 自制八倍潜望镜:从光学原理到DIY实践,打造你的专属观察系统
  • Godot引擎F6调试失效全解析:从快捷键冲突到脚本错误的系统排查指南
  • 硬件接口EMC设计实战:从原理到防护电路与PCB布局
  • TC3xx IOM深度解析:从引脚复用到硬件逻辑处理器的实战应用
  • 嵌入式基础_初识STM32F103ZET6
  • 拒绝流水线辩护!白云区知名律所对比,解锁刑事维权正确方式 - 资讯综合
  • 延迟指标解析:缓存命中率、流水线停顿与分支预测
  • STM32 HAL库 I2C协议实战:驱动AI智能小车与K210模块通信
  • 小白勇闯《苍穹外卖》Day3
  • CSDN发布版_AI边缘计算如何以云边端三级架构重塑千行百业智能底座(附六大行业实战解析)
  • 机器学习实战:房屋价格预测模型构建与优化
  • 会议室预约系统首选!高校、大企业都在用的智能预约工具
  • 从科幻隐喻到工程实践:构建稳定、权能固化的复杂系统架构
  • 手把手拆解Unity新输入系统:从零到懂的完整指南
  • 海外求职有哪些AI简历工具推荐-5款海外AI简历工具深度实测与选型指南
  • 鸿蒙DevEco开发环境运行模拟器,windows家庭版 报 Hyper-V 缺失,完整安装教程
  • 环评公示登报费用、模板流程及审批材料全解析:线上办理更省心 - 实用干货补给站
  • UE5 C++ 编辑器扩展:实现可视化顶点编辑控制柄
  • 性价比高的工业品阿里代运营哪个公司好? - 米諾
  • 03-FDEvs解决方案架构师vs算法工程师到底有什么不同
  • 基于HTML5 Canvas的前端趣味游戏开发实践:从社区梗到交互应用
  • 布鲁可大力神吊钩模型改造:从结构强化到可动关节实战指南
  • FPGA数据流缓冲设计:从乒乓操作到握手流控的本质解析
  • 硬件接口EMC设计实战:从TVS选型到PCB布局的可靠防护指南
  • 三维基因组学实战:TAD鉴定方法、保守性分析与多组学整合
  • C++友元类深度解析:从封装破例到高效协作的设计艺术