iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何在Java中使用位运算
  • 242
分享到

如何在Java中使用位运算

2023-06-15 03:06:55 242人浏览 薄情痞子
摘要

如何在Java中使用位运算?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、位运算的分类与展现效果java位运算可以分为左移和右移,其中右移还有无符号右移。 j

如何在Java中使用位运算?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

一、位运算的分类与展现效果

java位运算可以分为左移和右移,其中右移还有无符号右移。

如何在Java中使用位运算

java只对整型位移,可以分为int体系和long体系。int体系包括(byte, short, int, char),long体系只包含long。int体系中进行位运算时,除int类型外都会先转换为int再进行运算。.
无符号右移指的是,向右移动时,左边补位的是0。
一般来说,右移左移常用作乘2n 或者除以2n。(右移除以2n,左移乘以2n)

int i1 = 4; int r1 = i1 >> 2; // 除以2^2int r2 = i1 << 2; // 乘以2^2System.out.println(r1); // 1System.out.println(r2); // 16

二、原理

位运算实际上是将数值对应的二进制进行左右位移操作。java中数值的存储、运算是以补码的形式进行的。数值有三种存储方式:原码、反码、补码。

原码的最高位为符号位(0为正数,1为负数),其余位用于存储数值,以8位整型为例,2对应:

0000 0010

-2对应:

1000 0010

  反码和补码的正数都与原码相同。反码的负数在原码的基础上进行,除符号位外,其余按位取反。例如2的反码为:

0000 0010(正数不变)

-2的反码为:

1111 1101

补码在反码的基础上进行,反码加1就变成补码。

0000 0010(正数不变)

-2为:

1111 1110

8位整型,反码可以表示的范围为:[-128,127]

-128的反码表示为:

1000 0000

可以理解为:

1 1000 0000(原) => 1 0111 1111(反) => 1 1000 0000(补) => 1000 0000(补)

(查看了一些解释,-128的补码规定为1000 0000,若不理解,可以先跳过。)

左移即是补码向左移动,右边空出的用0补位,右移就是向右动,左边空出来的以符号位补位。(无符号右移,左边空出来的以0补位)。下面以具体代码举例(int 为32位):

正数:

int i1 = 4; // 0000 0000 0000 0000 0000 0000 0000 0100int r1 = i1 >> 2; // 期望 0000 0000 0000 0000 0000 0000 0000 0001 = 1int r2 = i1 << 2; // 期望 0000 0000 0000 0000 0000 0000 0001 0000 = 16System.out.println(r1); // 实际:1System.out.println(r2); // 实际:16

负数:

int i2 = -4; // 1111 1111 1111 1111 _ 1111 1111 1111 1100int r3 = i2 >> 2; // 期望:1111 1111 1111 1111 _ 1111 1111 1111 1111 = -1int r4 = i2 << 2; // 期望:1111 1111 1111 1111 _ 1111 1111 1111 0000 = -16int rx = i2 >>> 1; // 期望: 0111 1111 1111 1111 _ 1111 1111 1111 1110 = 2147483646System.out.println(rx); // 实际:2147483646System.out.println(r3); // 实际:-1System.out.println(r4); // 实际:-16

rx记录无符号右移结果,移动后左边补位以0补满,于是结果就变成了2147483646

三、边界值测试

int类型的范围为[-2147483648, 2147483647],下面对上下界分别进行测试:

// 边界值测试:int imax = Integer.MAX_VALUE; // 21_4748_3647 = 0111_1111_1111_1111_1111_1111_1111_1111 (2^31-1)int r5  = imax >> 2; // 0001_1111_1111_1111_1111_1111_1111_1111 = (2^30 - 1) = 5_3687_0911System.out.println(r5);// 实际:5_3687_0911int r6 = max << 2; // 1111_1111_1111_1111_1111_1111_1111_1100 (补码形式 ) = -4System.out.println(r6);// 实际:-4int imin = Integer.MIN_VALUE; //-21_4748_3648=1000_0000_0000_0000_0000_0000_0000_0000int r7 = imin << 1; // 0000_0000_0000_0000_0000_0000_0000_0000 = 0System.out.println(r7); // 实际:0

Java的优点是什么

1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分布性,Java是面向网络的语言;4. 鲁棒性,java提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。;5. 安全性,用于网络、分布环境下的Java必须防止病毒的入侵。6. 体系结构中立,只要安装了Java运行时系统,就可在任意处理器上运行。7. 可移植性,Java可以方便地移植到网络上的不同机器。8.解释执行,Java解释器直接对Java字节码进行解释执行。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 如何在Java中使用位运算

本文链接: https://www.lsjlt.com/news/277041.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在Java中使用位运算
    如何在Java中使用位运算?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、位运算的分类与展现效果java位运算可以分为左移和右移,其中右移还有无符号右移。 j...
    99+
    2023-06-15
  • js位运算在实际中如何使用
    这篇文章主要介绍了js位运算在实际中如何使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇js位运算在实际中如何使用文章都会有所收获,下面我们一起来看看吧。什么是位运算从现代计算机中所有的数据二进制的形式存储在...
    99+
    2023-06-29
  • java中位运算的使用示例
    这篇文章将为大家详细讲解有关java中位运算的使用示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。我们知道程序中的所有数在计算机内存中都是以二进制的形式储存的,而位运算就是直接对整数在内存中的二进制位进...
    99+
    2023-06-07
  • java如何使用位运算代替乘除法
    这篇文章主要介绍了java如何使用位运算代替乘除法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。位运算代替乘除法在所有的运算中,位运算是最为高效的。因此,可以尝试使用位运算代...
    99+
    2023-06-27
  • java中移位运算符怎么使用
    Java中的移位运算符有三种:左移位运算符()和无符号右移位运算符(>>>)。它们用于将一个二进制数向左或向右移动指定的位数。1. ...
    99+
    2023-09-26
    java
  • Java如何实现位运算
    这篇文章主要介绍了Java如何实现位运算,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。public class Operation5 {publ...
    99+
    2023-06-02
  • Java 中的位运算与移位运算详解
    位运算和移位运算是 Java 中常用的运算符,用于对数字的位进行操作。下面是位运算与移位运算的详细解释:1. 位运算符:- 按位与(...
    99+
    2023-08-14
    Java
  • Java中的位运算与移位运算详解
    目录位运算按位“与” &按位“或” |异或 ^移位运算左移 <<右移 >>无符号右移 >>>总结位运算 按位“与” & ...
    99+
    2024-04-02
  • Java中的位运算与移位运算有哪些
    本篇内容介绍了“Java中的位运算与移位运算有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!位运算按位“与” &规则: 如果两个...
    99+
    2023-06-22
  • JAVA中的运算符如何使用
    这篇文章给大家分享的是有关JAVA中的运算符如何使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、算术运算符运算符:常见的±*/等表达式:运算符连接起来符合java语法的式子,比如a+b算术运算符:+ - *...
    99+
    2023-06-25
  • c语言中移位运算符如何使用
    C语言中的移位运算符有两种:左移位运算符()。这两种运算符用于对一个数进行位移操作。左移位运算符(>)和算术右移(>>>)。逻辑右移...
    99+
    2023-09-14
    c语言
  • 如何在php中使用算术运算符
    这篇文章将为大家详细讲解有关如何在php中使用算术运算符,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。php的框架有哪些php的框架:1、Laravel,Laravel是一款免费并且开源的P...
    99+
    2023-06-14
  • 如何在VBS中使用运算符
    今天就跟大家聊聊有关如何在VBS中使用运算符 ,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。VBScript 有一套完整的运算符,包括算术运算符、比较运算符、连接运算符和逻辑运算符。...
    99+
    2023-06-08
  • python位运算符如何运算
    Python中的位运算符包括:与运算(&)、或运算(|)、异或运算(^)、取反运算(~)、左移运算()。下面是每个位运算符的运算规则...
    99+
    2023-10-11
    python
  • C语言位运算符如何使用
    本篇内容介绍了“C语言位运算符如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、位运算符分析C语言中的位运算符位运算符直接对 bit...
    99+
    2023-06-30
  • JavaScript中的7种位运算符是如何在实战中使用的
    本篇文章为大家展示了JavaScript中的7种位运算符是如何在实战中使用的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。位运算符操作符用于数值的底层操作,也就是操...
    99+
    2024-04-02
  • Java中的位运算与移位运算有什么不同
    位运算和移位运算都是Java中常用的操作符,但它们执行的操作是不同的。位运算(bitwise operation)是直接对操作数的每...
    99+
    2023-08-15
    Java
  • java中有哪些位运算
    java中有哪些位运算?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户端开发;...
    99+
    2023-06-14
  • java移位运算符在什么时候用
    Java移位运算符用于对一个数的二进制位进行移动。它们通常在以下情况下使用:1. 位运算:移位运算符可用于对整数进行位运算,如按位与...
    99+
    2023-08-29
    java
  • js如何使用位运算符来取整
    小编给大家分享一下js如何使用位运算符来取整,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用~、>>、<<、>>>、|...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作