`

Java中的位移运算符

 
阅读更多

Java中的位移运算符

  移位运算符就是在二进制的基础上对数字进行平移。
  我们知道,Java中byte、short和char类型在进行计算时都是先将其转换为int类型,同样在进行移位运算时也不例外。它们移位后的结果也都会变成int类型。由于int类型为32位的(1),所以对于byte、short、char和int进行移位时,规定实际移动的次数最多是31位,如果超过31,则按n = n % 32来计算,也就是说移位33次和移位1次得到的结果相同。移动long型的数值时(long是64位的),规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。您可以亲自动手做下试验。

现在我们介绍Java中的三种位移运算符:
1)<<(左移)
运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
语法格式:
  需要移位的数字 << 移位的次数
  例如: 5 << 2,则是将数字5左移2位
  计算过程:
  5 << 2
  首先把3转换为二进制数字(int类型的话为32位,8字节;long的话为64位16字节)0000 0000 0000 0000 0000 0000 0000 0101,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0001 0100,则转换为十进制是20
  数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。比如5 << 2 = 5 * 4
2)>>(带符号右移)
运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,即正数补0,负数补1.
  语法格式:
  需要移位的数字 >> 移位的次数
  例如11 >> 2,则是将数字11右移2位
  计算过程:11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010.转换为十进制是3.
数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。
3)>>>(无符号右移)。
 运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。其他结构和>>相似。

  位移运算通常用来对代码进行速度上的优化,用它来代替乘除法将是很好的选择。

  下面来举几个例子,希望对大家使用位移运算符有所帮助
  1.用位移运算符来实现 i / 100
    100 = 64 + 32 + 4
    所以对i / 100可以这样来表示: ( i << 6 ) + ( i <<5) + ( i << 2 )

  2.写出( q << 3 ) + ( q << 1 )实现的代码
    原式 = q * 2 ^ 3 + q * 2 ^ 1 = q * ( 8 + 2) = q * 10

分享到:
评论

相关推荐

    java位运算符.pdf

    位运算符分为两大类:位逻辑运算符和位移运算符。位逻辑运算符包括按位与(AND)、按位或(OR)、按位异或(XOR)和按位非(NOT)。位移运算符则有右移(&gt;&gt;&gt;和&gt;&gt;)和左移()。 1. **位逻辑运算符**: - **按位非...

    李妍的Java学习之路-Java运算符

    位运算符,如 AND (&), OR (|), XOR (^), NOT (~) 以及位移运算符 (, &gt;&gt;, &gt;&gt;&gt;),作用于整数类型的二进制表示。位运算符直接操作二进制位,例如 `a & b` 会返回 `a` 和 `b` 的二进制与运算结果。位移运算符会改变数字...

    Java运算符+(优先级、目数)+.doc

    11. **位移运算符(, &gt;&gt;, &gt;&gt;&gt;):** 左移位运算符将二进制位向左移动指定位数,右移位运算符则向右移动。无符号右移运算符对负数也会填零。这些都是双目的运算符,从左到右结合。 12. **关系运算符(&lt;, &gt;, , &gt;=, ...

    Java运算符常见面试题及答案

    11. **位移运算符**:左移()和右移(&gt;&gt;)用于将二进制位向左或向右移动指定的位数。例如,`5 将返回20(二进制表示为101左移两位变为10100)。 12. **取反运算符**:`~`用于对整数进行按位取反,将0变为1,将1...

    java运算符优先级[借鉴].pdf

    Java语言中的运算符优先级是指在Java语言中各种运算符的执行顺序和结合性。了解Java运算符优先级是非常重要的,因为它可以帮助我们正确地编写Java程序,避免一些常见的错误。 以下是Java运算符优先级的详细列表: ...

    Java移位运算符1

    在Java编程语言中,移位运算符是一种高效的方式来进行位操作,它们对于处理二进制数据和进行快速的乘法、除法等计算非常有用。本文将深入探讨Java中的三种移位运算符:左移运算符(),右移运算符(&gt;&gt;)以及无符号右...

    Java运算符.docx

    Java运算符是编程中不可或缺的部分,它们用于执行各种计算、比较和逻辑操作。在Java中,运算符可以分为多个类别,包括算术运算符、关系运算符、逻辑运算符、赋值运算符以及位运算符。 1. **算术运算符**:包括`+`、...

    Java编程详细教程运算符表达式流程控制上PPT教案学习.pptx

    位移运算符`和`&gt;&gt;`分别用于左移和右移位,`&gt;&gt;&gt;`是无符号右移,移位过程中高位不会填充符号位。 最后,赋值运算符允许我们简洁地进行赋值操作,比如`x+=y`相当于`x = x + y`。同时,Java支持将其他运算符与赋值...

    10_02.rar_10_02_java 位移

    3. 位移运算符:深入理解、&gt;&gt;和&gt;&gt;&gt;的用法及它们对二进制数据的影响。 4. 图形生成:如何通过编程实现分形山的可视化。 5. 注释规范:良好的编程习惯,通过注释解释关键代码的功能和作用。 通过分析并运行这个程序,...

    浅析Java语言在计算机软件开发中的应用.pdf

    Java语言的运算符包括赋值运算符、关系运算符、算数运算符、逻辑运算符、条件运算符、位运算符和位移运算符七种。Java语言的运算符可以操作常量与变量,Java语言的运算符对编程表达形式有各自特别的要求。在运算时...

    Java运算符优先级别.doc

    5. **位移运算符** `, `&gt;&gt;`, `&gt;&gt;&gt;`:从左到右结合。 - **左移** `将二进制数的各位向左移动。 - **右移** `&gt;&gt;`:将二进制数的各位向右移动。 - **无符号右移** `&gt;&gt;&gt;`:与右移类似,但高位补0。 6. **比较运算符*...

    Java程序设计基础:运算符与表达式.pptx

    本文将深入探讨Java中的各种运算符及其用法,并通过实例讲解如何正确地使用这些运算符来构建有效的表达式。 #### 二、表达式的基本概念 - **表达式**是由操作数和运算符组成的结构,它表示一种值。 - **操作数**...

    JAVA中位运算符合移为运算符

    在Java编程语言中,位运算符和移位运算符是处理二进制数据的重要工具,它们在底层操作中发挥着关键作用。本文将深入探讨这两个主题,并通过实例解析其工作原理。 位运算符直接作用于整数类型的二进制表示,包括与(&...

    Java移位运算符详解实例(小结)

    Java移位运算符是Java语言中的一种基本运算符,用于对二进制数进行位移操作。移位运算符主要包括左移位运算符()、右移位运算符(&gt;&gt;&gt;)和带符号的右移位运算符(&gt;&gt;)。这些运算符可以单独用来处理int型整数。 1. ...

    3.2.2 java中的关系与条件运算符.pdf

    在Java编程语言中,关系与条件运算符是构建复杂逻辑判断的重要工具。关系运算符主要用于比较两个值之间的关系,而条件运算符则用于基于不同条件生成不同结果。以下是这些运算符的详细说明: **关系运算符**: 1. `&gt;...

    Java SE-基础篇-运算符、随机数(Random)、方法、数组-入门级讲解

    - 位运算符:如按位取反(`~`), 按位与(`&`), 按位或(`|`), 按位异或(`^`)以及位移运算符,如左移(`), 带符号右移(`&gt;&gt;`)和无符号右移(`&gt;&gt;&gt;`)。位移运算符常用于快速计算乘法和除法。 2. 随机数(Random): Java中...

    JAVA选择题复习.txt

    - Java中的位移运算符包括`&gt;&gt;`(右移)、`(左移)和`&gt;&gt;&gt;`(无符号右移)。 #### 19. 位运算操作 - `&gt;&gt;&gt;`为无符号右移运算符,用于将二进制数进行右移操作,高位补零。 #### 20. 浮点数取模运算 - 浮点数也可以...

    Java操作符的优先级和结合性

    6. 移位运算符:`、`&gt;&gt;`、`&gt;&gt;&gt;` —— 从左到右执行,用于位移操作,如 `a 。 7. 关系运算符:`、`、`&gt;`、`&gt;=`、`instanceof` —— 从左到右执行,用于比较操作,如 `a 。 8. 相等运算符:`==`、`!=` —— 从左到右...

Global site tag (gtag.js) - Google Analytics