java移位运算有什么作用_java中移位运算符

java移位运算有什么作用_java中移位运算符

按位运算符允许我们操作一个整数主数据类型中的单个“比特”,即二进制位。按位运算符会对两个自变量中对应的位执行布尔代数,并最终生成一个结果。

Java的设计初衷是嵌入电视顶置盒内,所以这种低级操作仍被保留下来了。然而,由于操作系统的进步,现在也许不必过于频繁地进行按位运算。

若两个输入位都是1,则按位AND运算符(&)在输出位里生成一个1;否则生成0。若两个输入位里至少有一个是1,则按位OR运算符(|)在输出位里生成一个1;只有在两个输入位都是0的情况下,它才会生成一个0。若两个输入位的某一个是1,但不全都是1,那么按位XOR^,异或)在输出位里生成一个1。按位NOT~,也叫作“非”运算符)属于一元运算符;它只对一个自变量进行操作(其他所有运算符都是二元运算符)。按位NOT生成与输入位的相反的值——若输入0,则输出1;输入1,则输出0

按位运算符和逻辑运算符都使用了同样的字符,只是数量不同。因此,我们能方便地记忆各自的含义:由于“位”是非常“小”的,所以按位运算符仅使用了一个字符。

按位运算符可与等号(=)联合使用,以便合并运算及赋值:&=|=^=都是合法的(由于~是一元运算符,所以不可与=联合使用)。

我们将boolean(布尔)类型当作一种“单位”或“单比特”值对待,所以它多少有些独特的地方。我们可执行按位ANDORXOR,但不能执行按位NOT(大概是为了避免与逻辑NOT混淆)。对于布尔值,按位运算符具有与逻辑运算符相同的效果,只是它们不会中途“短路”。此外,针对布尔值进行的按位运算为我们新增了一个XOR逻辑运算符,它并未包括在“逻辑”运算符的列表中。在移位表达式中,我们被禁止使用布尔运算,原因将在下面解释。

移位运算符

移位运算符面向的运算对象也是二进制的“位”。可单独用它们处理整数类型(主类型的一种)。左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。“有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用了 “符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是CC++没有的。

若对charbyte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的 5个低位才会用到。这样可防止我们在一个int数里移动不切实际的位数。若对一个long值进行处理,最后得到的结果也是long。此时只会用到右侧的6个低位,防止移动超过long值里现成的位数。但在进行“无符号”右移位时,也可能遇到一个问题。若对byteshort值进行右移位运算,得到的可能不是正确的结果(Java 1.0和Java 1.1特别突出)。它们会自动转换成int类型,并进行右移位。但“零扩展”不会发生,所以在那些情况下会得到-1的结果。可用下面这个例子检测自己的实现方案:

//: URShift.java // Test of unsigned right shift public class URShift { public static void main(String args) { int i = -1; i >>>= 10; System.out.println(i); long l = -1; l >>>= 10; System.out.println(l); short s = -1; s >>>= 10; System.out.println(s); byte b = -1; b >>>= 10; System.out.println(b); } } ///:~

移位可与等号(<<=>>=>>>=)组合使用。此时,运算符左边的值会移动由右边的值指定的位数,再将得到的结果赋回左边的值。

本文【java移位运算有什么作用_java中移位运算符】由作者: Web服务 提供,本站不拥有所有权,只提供储存服务,如有侵权,联系删除!
本文链接:https://www.cuoshuo.com/blog/4207.html

(0)
上一篇 2023-03-10 08:50:20
下一篇 2023-03-10 08:55:31

相关推荐

  • 软件开发技术文档编写 编写一个软件需要什么

    前言: 不同颜色代表不同的文档,本文阐述了软件开发过程中十二个必要文档的书写格式与规范,喜欢的话可以点个收藏转发。 软件文档编写指南 系统规约说明书(System Specification) 一.引言 A. 文档的范围和目的 B. 概述 1.目标 2.约束 二.功能和数据描述 A. 系统结构 1.结构关系图 2.结构关系图描述 三.子系统描述 A. 子系统…

    2023-03-21
    000
  • 制作html简易个人主页

    HelloWebUI 分享多主题、多语言、响应式web网页模板 移动端语言切换展示 IPad/PC 多主题展示 源码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <meta name="viewport&#03…

    2023-03-12
    300
  • 傅里叶变换红外光谱仪_紫外可见近红外光度计

    傅里叶变换红外光谱仪(FTIR)是基于对干涉后的红外光进行傅里叶变换的原理而开发的红外光谱仪,主要由红外光源、光阑、干涉仪、样品室、检测器以及光路系统组成,可以对样品主要成分(有机物或部分无机物)进行定性和定量分析,方便快捷,广泛应用于材料、化工、环保和医药等领域。 傅里叶红外光谱仪的原理 特定频率的红外光照射被分析试样,如果分子中有某个基团的振动频率与照射…

    2023-03-19
    000
  • 数据库关系图索引超出了数组界限_超出了数组界限怎么办

    数组的赋值与使用通过数组的下标进行即通过改变中括号中的数字来进行赋值取值,专有名词叫访问,不过数组的下标是从0开始到数组总个数减一,比如下面例题 还是以整形数组为例 int nums=new int;//声明一个空的整形数组,通过下标对其赋值,因为中括号中数字为5,所以声明了一个拥有5个整形元素的数组,其下标值为 0-4,这个5也可以说这个数组的容量是5 如…

    2023-03-21
    000
  • excel数据透视表怎么用 excel数据透视表高级应用

    很久没跟大家分享透视表的使用技巧了,今天跟大家分享8个数据透视表的使用技巧,动图演示,让你一学就会,快速提高工作效率,废话不多说,让我们直接开始吧! 想要从零学习Excel,这里↓↓↓ 一、更改统计方式 透视表会根据【值】区域的字段的数据格式对数据进行自动计算,数值格式默认【求和】文本格式默认【计数】 如果需要修改的话,只需要在透视表中,点击【值区域】的数据…

    2023-03-21
    000
  • c语言编译器如何改成中文版_c语言编译器怎么改中文版

    一、 目前编译器的三种主流形式 做开发的,不论是阅读代码、编写程序总会涉及到编译器问题,我也经历过了TC、VC6、VC2010、CodeBlocks等等,使用过很多软件,最后慢慢的形成了自己的一套系统,希望对你也有帮助。 常见的C编译器主要的方式有以下三种: 1、基于文本编辑器改造的编译器 专业文本编辑器: (1)Visual Studio Code Vis…

    2023-03-10
    400
  • 清除右键多余菜单的快捷键

    我们使用电脑过程中会安装许多软件,而一些软件会自己添加到鼠标右键菜单,这样不仅使右键菜单变得冗长还拖慢了系统的速度,下面一起来看看怎么去除右键菜单。 1、打开运行窗口(win+r),输入regedit,按回车键进入,如图所示: 2、展开HKEY_CLASSES_ROOT\Directory\Shell和HKEY_CLASSES_ROOT\Directory\…

    2023-03-13
    1000
  • iis如何安装,win7怎么安装iis组件

    一、搭建IIS服务器 1.启用功能 单击桌面左下角“开始”菜单,输入“控制面板”,双击进入“控制面板”,打开“程序”,如图表 11和图表 12所示。 进入“启用或关闭Windows功能”如图表 13所示。 在弹出的窗口有许多选项,找到“Internet Information Services”,勾选全部功能,如图表 14所示。 单击“确定”,等待电脑自动安…

    2023-03-12
    200
  • md5怎么看哪个文件坏了 md5文件用什么打开

    项目遇到一个需求,修改一个文件的md5,然后保存。 所谓md5就是把文件内容全部读出来,然后用md5算法计算出一个hash值,只要这个文件内容是不变的,md5值就不会变。也就是说,一个文件内容只对应一个md5值,如果两个文件的md5值一样,那么就可以断定这两个文件是一样的。当然这也只是概率的问题,极端情况下还是可能重复的,只是概率较低。 网上有一些查看和修改…

    2023-03-15
    200
  • stm32单片机和51单片机区别_stm32比51单片机的优点

    我们经常说51单片机和STM32单片机,到底他们有什么区别呢? 一:51单片机 01、简介 51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom 技术的发展,8004单片机取得了长足的进展,成为应用广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用…

    2023-03-09
    1100

发表回复

登录后才能评论
返回顶部
错说博客上线啦!