在这里插入图片描述
哎唷哎唷哎唷, 诸位讨人喜欢的小家伙们, 我乃是你们的靠谱同伴——bug菌, 今儿再度前来为大伙讲授有关Java SE的相关知识要点了, 别藏起来, 聆听我讲述实用内容还不赶紧点赞, 点赞数量多了我便会拥有更足的动力讲得愈发带劲!故而, 培育起先点赞而后阅读的良好习惯, 别被实用内容给彻底淹没~
这里面有一则收录, 是置于某一栏目的, 它把专业攻坚的程度呈指数级予以提升, 能给你提供助力, 引领你早日到达顶峰, 诚挚欢迎各位予以关注, 且进行收藏!它正处于持续更新阶段, 加油。加油。加油!
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8@toc
前言
因易于学习、具备安全特性、拥有可移植性以及有着广泛应用, Java成为一门受广泛青睐的流行高级编程语言, 本篇文章着重介绍Java里的位运算符, 为毫无基础的Java学习者给予详细入门指导。
摘要
Java之中的位运算符, 属于一组极为重要的运算符, 它们具备对二进制数字予以操作的能力, 涵盖移位、与、或、异或等之类的操作, 而这些操作, 对于优化程序的性能以及处理特定类型的数据而言, 是相当有用的。
本文会特别着重去介绍Java里的位运算符, 涵盖它们的使用方法, 包含应用场景方面的案例, 以及其他与之相关的知识点。
Java-位运算符简介
在计算机编制的程序里头, 二进制形式的数字是极为常见的。Java所拥有的位运算符能够针对这些二进制模样数字予以操作举措, 这里面有着移位、与、或、异或等相关操作行为。
Java中的位运算符包括以下几种:
下面我们将分别详细介绍这些操作符的使用方法。
按位与操作符
在按位与操作符之中, 所使用的符号是“ ”, 此操作符的用途在于, 针对两个操作数的每一位来开展对比之事。当两个操作数相应的位均为1时, 那么得出的结果便是1, 不然的话, 得出的结果即为0。
例如:
int a = 60; // 二进制表示为0011 1100 int b = 13; // 二进制表示为0000 1101 int c = a & b; // 二进制表示为0000 1100在上述所举例子里头, 变量a所具的值是60, 它的二进制呈现为0011 1100, 变量b的值为13, 其对应的二进制表示是0000 1101。借助于按位与操作符来针对这两个数践行操作, 我们获取到了一个新颖的值c, 它二进制表达是0000 1100, 此即为按位与操作的最终结果。
按位或操作符
使用符号“|”的按位或操作符, 它对着两个需操作的数展开每一位别开生面的对比行动。一旦出现这么一种情况, 也就是这两个操作数之间对应的每一位里只要存在哪怕一个成为1的状况, 那么最终得出的结果便会是1, 不然的话其结果就会是0。
例如:
int a = 60; // 二进制表示为0011 1100 int b = 13; // 二进制表示为0000 1101 int c = a | b; // 二进制表示为0011 1101在上述所举例子当中, 存有变数a, 其值为六十, 以二进制呈现是零零一一一一零零, 还存在变数b, 其值为十三, 二进制呈现是零零零零一一零一。经由运用按位或操作符针对这两个数值予以操控, 进而获取到一个全新的值c, 其以二进制表示成零零一一一一零一, 此即为按位或操作所产生的结果。
按位异或操作符
在按位异或操作符里, 所使用的符号是“^”, 此操作符的用途在于, 针对两个操作数用以开展每一位的对比工作, 当两个操作数的对应位呈现相同状况时, 那么其结果就会是0, 要是两个操作数的对应位并非相同的情形, 那么最终结果将会是1。
例如:
int a = 60; // 二进制表示为0011 1100 int b = 13; // 二进制表示为0000 1101 int c = a ^ b; // 二进制表示为0011 0001上述例子里,变量a的值为60, 其对应的二进制呈现是0011 1100。变量b的值为13, 该值的二进制显示为0000 1101。借助按位异或操作符对这两个数开展操作, 进而得到了一个新的值c, c的二进制表现是0011 0001, 此即按位异或操作的最终结果。
按位取反操作符
按位取反操作符所使用的符号是“~”, 它能够对操作数的每一位进行取反的这种操作, 也就是把1转变为0, 零更改为1。
例如:
int a = 60; // 二进制表示为0011 1100 int b = ~a; // 二进制表示为1100 0011在上边所举的例子里头, 变量a的数值是60, 它的二进制呈现为0011 1100。借由运用就按位取反这方面的操作符拿来针对这个数施展操作, 我们获取到一个新的数值b, 其二进制样子是1100 0011, 这可是按位取反操作的所呈现效果。
左移位操作符
左移位这个操作符所使用的符号是“”, 它能够用来把操作数的二进制数值, 朝着右边移动规定好的位数, 右移位操作符得出的结果是, 原来的那个值去除以2的移位数次方以后的数值。
例如:
int a = 60; // 二进制表示为0011 1100 int b = a >> 2; // 二进制表示为0000 1111在上述所举例子当中, 变量a所具有的值是60, 此数值的二进制呈现形式为0011 1100, 借由运用右移位操作符针对这个数实施右移2位的这般操作, 我们从而获取到了一个全新的值b, 该值的二进制表示形态为0000 1111, 这便是右移位操作最终达成的结果。
无符号右移位操作符
无符号右移位操作符, 其使用的符号为“>>>”, 它的作用是, 把操作数的二进制值, 朝着右边移动, 移动的位数是指定的, 然而, 它会在空位上插入0, 而不会对符号位进行复制, 就是这样。
例如:
int a = -60; // 二进制表示为1111 1111 1111 1111 1111 1111 1100 0100 int b = a >>> 2; // 二进制表示为0011 1111 1111 1111 1111 1111 1111 1001将这个数右移2位, 是通过使用无符号右移位操作符, 在上面的例子里, 变量a的值呈现为-60, 此值的二进制表现是1 1 1100 0100, 右移后的这个新生值是b, 它的二进制展现为0 1 1111 1001, 这便是无符号右移位操作达成的结果。
案例解析
以下是Java中位运算符的源代码解析:
测试代码演示
package com.demo.javase.day09; /** * Java之位运算符案例演示 * * @Author bug菌 * @Date 2023-11-08 22:59 */ public class BitwiseOperatorsTest { public static void main(String[] args) { int a = 60; // 二进制表示为0011 1100 int b = 13; // 二进制表示为0000 1101 int c = a & b; // 按位与操作 System.out.println("a & b = " + c); // 输出:a & b = 12 int d = a | b; // 按位或操作 System.out.println("a | b = " + d); // 输出:a | b = 61 int e = a ^ b; // 按位异或操作 System.out.println("a ^ b = " + e); // 输出:a ^ b = 49 int f = ~a; // 按位取反操作 System.out.println("~a = " + f); // 输出:~a = -61 int g = a << 2; // 左移位操作 System.out.println("a << 2 = " + g); // 输出:a << 2 = 240 int h = a >> 2; // 右移位操作 System.out.println("a >> 2 = " + h); // 输出:a >> 2 = 15 int i = -60; // 二进制表示为1111 1111 1111 1111 1111 1111 1100 0100 int j = i >>> 2; // 无符号右移位操作 System.out.println("i >>> 2 = " + j); // 输出:i >>> 2 = 1073741821 } }在那上面的源代码里头, 我们界定了一些变量, 并且运用了Java之中的位运算符针对它们开展操作, 借助.out.()方法输出了各个操作的结果, 从而让我们能够查看其输出结果。
测试结果
凭依上述测试用例, 本地测试的结果是这样的, 仅作参考之用, 而你们同样能够自行去修改测试用例, 或者增添更多的测试数据, 又或者采用更多的测试方法, 经由这般熟练学习来借此增进理解。
在这里插入图片描述
测试代码分析
依据像上面所示例的测试用例, 在这儿, 我要针对测试代码, 给各位进行一番深入且详尽的阐释, 从而能够使更多同学去理解之, 并且加深脑海中的印象。
如上测试用例代码演示了Java中的位运算符,具体说明如下:
定义整型变量a, 将其赋值为60, a的二进制表示为0011 1100, 再定义整型变量b, 把b赋值为13, b的二进制表示为0000 1101, 运用按位与操作符&, 对a和b进行按位与操作, 操作的结果为12, 换算成二进制是0000 1100, 最后将结果输出为"a & b = 12"。把a以及b运用按位或操作符|来做按位或操作,其结果是61, 也就是0011 1100 | 0000 1101等于0011 1101, 输出的结果成为"a | b = 61"。将a和b利用按位异或操作符^去做按位异或操作, 结果为49,即0011 1100 ^ 0000 1101等于0011 0001, 输出结果是"a ^ b = 49"。运用按位取反操作符来对a实施按位取反操作, 所得到的结果是-61, 也就是~0011 1100等于1100 0011, 进而输出"~a = -61" , 运用左移位操作符a >> 2等于0000 1111, 输出结果是"a >> 2 = 15"。把整型变量i定义为-60并赋值, 其对应的二进制呈现为1 1 1100 0100, 运用无符号右移位操作符>>>, 将i进行右移2位的动作, 所得到的结果为, 也就是1 1 0100 11, 输出的结果以文本形式展现为"i >>> 2 ="。应用场景案例。
Java中的位运算符广泛应用于以下场景:
位掩码操作
单个数中用以存储多个开关状态的当属位掩码这一技术, 其在计算机图形学领域有着广泛应用。借助 Java 里的位运算符能轻松开展位掩码操作, 此操作便于管理不同颜色、材质以及纹理等方面的开关状态。
比如, 我们能够运用按位或操作符, 把不同属性的位掩码归拢到一块儿, 借此迅速查验它们的状态。
优化算法
Java里头的位运算符, 同样能够用来对算法的性能予以优化。比如说, 借助位移操作来替换乘除操作, 能够将程序的速度实现大幅度提升。在针对像素、图像以及视频等诸多数据进行处理之际, 这样的优化显得格外重要。
比如说, 咱能够在进行位移方面操作期间运用位移运算符, 进而达成能较快移动数据的目的。
处理位数据
Java里头的位运算符同样能够用来处理位的数据, 像字节, 字, 长整型之类的。运用这些运算符, 咱可以轻轻松松地提取位的数据, 计算位的数据, 还有操作位的数据。
比如说, 我们能够运用按位与操作符去提取特定位置的值, 还有, 能够借助左移位操作把该值摆在正确的位置上哟。
总结
Java里头的位运算符, 那可是相当重要的运算符, 这些运算符啊能够去对二进制数字做操作, 操作内容涉及移位操作, 还有与操作, 以及或操作, 另外还有异或操作等。借助这些运算符呀 , 我们可以便利地开展位掩码操作, 还能够优化算法, 并且可以处理位数据。
诸般位运算符于Java之中, 其种种使用方法被详细介绍, 与此同时, 位运算符所能适用的那些情形之案例也为大家作出了呈现之举动, 还有其他相关的一些知识要点也得到了讲解处理。经由对这篇文章进行学习, 读者诸君能够以更为良好的状态去理解Java里的各类位运算符以及它们实际承载的作用意义, 于是就能够让自身的编程技能以及效率获得提升之变化。
...
好, 这期内容基本上快要接近结束阶段, 要是你想要去学习更多的相关内容, 那么可以参考这篇有着《》标识作总结的专栏, 本专栏一直致力于去打造最为硬核的针对零基础的 Java 一系列学习内容, 努力去打造在全网范围当中精品的硬核专栏, 能够带着你实现直接超车;欢迎各位来进行订阅并且持续不断地学习。
附录源码
将上面涉及的, 所有的源码, 都进行了上传, 并且同步在了那里,提供给同学们, 用于一对一的参考学习, 以此辅助你, 更加迅速地去掌握。
️建议/推荐你
不管你身为计算机专业的学生, 或者是对编程怀有兴趣的伙伴, 都被建议直接毫无顾虑地去学习这个专栏, bug菌严肃承诺, 即便是学习这个专栏的同学, 都能够获取到所需的知识以及技能, 在全网以最快速的方式入门Java编程, 如同滚雪球那样, 滚得越大, 呈指数级地提升。