`
hellsing42
  • 浏览: 262087 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java中的位操作

阅读更多
对于java这种语言来说,位操作符比较少用到

&:按位与。

|:按位或。

^:按位异或。

~:按位取反。

<<:左移,高位插0,否则插1;

>>:右移,高位插0,否则插1;

>>>:无符号右移,无论正负,高位插0


1.<<

逻辑左移,右边补0,符号位和其他位一样.

正数:

x<<1一般相当于2x,但是可能溢出.

溢出范围: 230~(231-1) 二进制表示 010000...000到01111....1111,移位后最高为变为1了,变成负数了.

负数:

x<<1一般也相当于2x,也有可能溢出.所以, x*32可以写成x<<5

溢出范围: -231~-(230+1)二进制表示10000...000到101111...1111,移位后最高为变成0了,变成正数了.


2.>>

算术右移,和上面的不对应,为正数时左边补0,为负数时左边补1.

x>>1,相当于x/2,余数被舍弃,因为这个是缩小,所以不会溢出.

不过有一点要注意: -1右移多少位都是-1.

另外舍弃的余数是正的, 3>>1=1 舍弃的余数是1.

-3>>1=-2 舍弃的余数也是1,而不是-1.

对于正数 x>>1和x/2相等

对于负数 x>>1和x/2不一定相等.


3.>>>

逻辑右移,这个才是和<<对应的

这个把符号位一起移动,左边补0

对于正数,>>>和>>是一样的

对于负数,右移之后就变成正数了.


可以使用Integer.toBinaryString(int i)来看01比特,更加直观.
分享到:
评论

相关推荐

    java 位操作集合以及应用技巧

    Java中的位操作是一种底层的、高效的编程技巧,它允许我们直接对二进制位进行操作。位操作在处理数据、优化代码性能等方面有着广泛的应用,尤其是在处理二进制流、节省内存资源或进行高效计算时。本文将深入探讨Java...

    Java位操作工具类

    经常项目中用到的Java的位运算相关的方法,稍微整理了下 详细介绍可参考博客 http://longshaojian.iteye.com/admin/blogs/1946865 请多指教!

    windows的64位操作系统下的java的jdk17安装包

    Java JDK 17是Oracle公司推出的Java开发工具集(Java Development Kit)的最新版本,针对Windows 64位操作系统设计。这个安装包(jdk-17_windows-x64_bin.exe)包含了开发者在Windows环境下编译、调试和运行Java应用...

    java位运算操作

    Java位运算操作 左位移 右位移 与或非的操作

    Java中的位运算

    ### Java中的位运算 #### 一、概述 位运算(Bitwise Operators)是计算机科学中的一个基础概念,它直接作用于二进制位上。在Java语言中,位运算符可以应用于所有整型数据类型,如`long`、`int`、`short`、`char`和...

    java 按位操作符的使用

    在Java中,按位操作符用于对整数进行位级别的操作 按位与(&)操作符 按位或(|)操作符 按位异或(^)操作符 按位取反(~)操作符 左移()操作符 右移(&gt;&gt;)操作符

    java7 32位版

    Java 7 32位版是Java开发工具集(Java Development Kit, JDK)的一个特定版本,专为32位操作系统设计。在计算机编程领域,Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(后被Oracle公司收购)开发并...

    JAVA_API1.6文档(中文)

    java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...

    java64位jdk

    64位版本的Java JDK针对64位操作系统,这种系统能够处理更大的内存地址空间,允许Java应用程序利用更多的RAM。这对于处理大数据、复杂的多线程应用或需要大量内存的高性能计算至关重要。相比32位版本,64位Java可以...

    java11 windows64位

    Windows 64位版本是专为在Windows操作系统上运行的64位处理器设计的,能够充分利用现代计算机硬件的性能优势。 Java SE Development Kit (JDK) 11.0.15.1是Java 11的一个更新版本,它包含了Java开发所需的所有工具...

    java安装包(windows 32位)

    描述中的"java安装程序,适用于windows32位操作系统。为初学者提供便利。"意味着这个安装包是特别针对那些刚开始学习Java编程且使用32位Windows系统的用户。由于很多现代计算机已经转向64位系统,但仍有部分用户使用...

    luajava1.1 64位版本和32位版本

    luajava-1.1-x32-lua51.rar是32位版本的luajava 1.1,适用于32位操作系统。其中"lua51"表示它依赖于Lua 5.1版本。在解压此RAR文件后,你需要按照readme.txt中的指示进行安装,通常包括设置环境变量、将库文件添加到...

    Java——jdk1.8(64位和32位)

    64位JDK适合64位操作系统,可以处理更大的内存,更适用于大数据处理和高性能计算。32位JDK则适用于32位操作系统,内存管理有限,但能兼容更多的32位应用程序。选择哪种版本取决于你的操作系统的架构。 4. **Lambda...

    java jdk 32位

    Java JDK 32位是Java开发环境中不可或缺的部分,主要用于32位操作系统的编程工作,尤其适合那些仍需在旧系统上运行或开发的项目。Java JDK(Java Development Kit)是Oracle公司提供的Java语言开发工具包,它包含了...

    java位运算,符号运算 详细解释

    3. 位操作优化:在某些算法中,位运算比常规算术运算更快,特别是在大量重复计算时。 4. 二进制数据处理:如解析网络协议、处理图像数据等,需要直接操作二进制位的情况。 四、实例分析 假设我们有两个整数a=5 ...

    javaRD800.dll 32位操作系统文件下载

    然而,对于“javaRD800.dll 32位操作系统文件下载”,由于32位版本的软件在64位系统中不兼容,所以如果你的系统是64位的,下载这个文件可能无法解决问题。在这种情况下,你需要寻找适合64位系统的对应文件,或者安装...

    Java JDK 17 (32位Windows系统)

    Java JDK 17 (32位Windows系统)是Oracle公司为Windows操作系统提供的Java开发工具包的一个版本,专门针对32位架构。这个版本包含了Java编译器、Java运行时环境、Java类库以及相关的开发工具,是Java开发者进行程序...

    32位的Java Runtime Environment

    总结来说,32位的Java Runtime Environment在32位操作系统中起着至关重要的作用,为运行Java应用程序提供必要环境。随着技术的发展,尽管64位环境逐渐成为主流,但32位JRE仍然在特定场景下保持着其价值。理解和掌握...

    systembartint-1.0.4.zip

    《深入解析Bit-lib4j:一个Java位操作实用库》 在编程领域,尤其是在处理高效数据存储和计算时,位操作往往扮演着重要的角色。Java虽然提供了基本的位操作符,如位与(&),位或(|),位异或(^),位非(~)以及左移()和...

Global site tag (gtag.js) - Google Analytics