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
分享到:
相关推荐
位运算符分为两大类:位逻辑运算符和位移运算符。位逻辑运算符包括按位与(AND)、按位或(OR)、按位异或(XOR)和按位非(NOT)。位移运算符则有右移(>>>和>>)和左移()。 1. **位逻辑运算符**: - **按位非...
位运算符,如 AND (&), OR (|), XOR (^), NOT (~) 以及位移运算符 (, >>, >>>),作用于整数类型的二进制表示。位运算符直接操作二进制位,例如 `a & b` 会返回 `a` 和 `b` 的二进制与运算结果。位移运算符会改变数字...
11. **位移运算符(, >>, >>>):** 左移位运算符将二进制位向左移动指定位数,右移位运算符则向右移动。无符号右移运算符对负数也会填零。这些都是双目的运算符,从左到右结合。 12. **关系运算符(<, >, , >=, ...
11. **位移运算符**:左移()和右移(>>)用于将二进制位向左或向右移动指定的位数。例如,`5 将返回20(二进制表示为101左移两位变为10100)。 12. **取反运算符**:`~`用于对整数进行按位取反,将0变为1,将1...
Java语言中的运算符优先级是指在Java语言中各种运算符的执行顺序和结合性。了解Java运算符优先级是非常重要的,因为它可以帮助我们正确地编写Java程序,避免一些常见的错误。 以下是Java运算符优先级的详细列表: ...
在Java编程语言中,移位运算符是一种高效的方式来进行位操作,它们对于处理二进制数据和进行快速的乘法、除法等计算非常有用。本文将深入探讨Java中的三种移位运算符:左移运算符(),右移运算符(>>)以及无符号右...
Java运算符是编程中不可或缺的部分,它们用于执行各种计算、比较和逻辑操作。在Java中,运算符可以分为多个类别,包括算术运算符、关系运算符、逻辑运算符、赋值运算符以及位运算符。 1. **算术运算符**:包括`+`、...
位移运算符`和`>>`分别用于左移和右移位,`>>>`是无符号右移,移位过程中高位不会填充符号位。 最后,赋值运算符允许我们简洁地进行赋值操作,比如`x+=y`相当于`x = x + y`。同时,Java支持将其他运算符与赋值...
3. 位移运算符:深入理解、>>和>>>的用法及它们对二进制数据的影响。 4. 图形生成:如何通过编程实现分形山的可视化。 5. 注释规范:良好的编程习惯,通过注释解释关键代码的功能和作用。 通过分析并运行这个程序,...
Java语言的运算符包括赋值运算符、关系运算符、算数运算符、逻辑运算符、条件运算符、位运算符和位移运算符七种。Java语言的运算符可以操作常量与变量,Java语言的运算符对编程表达形式有各自特别的要求。在运算时...
5. **位移运算符** `, `>>`, `>>>`:从左到右结合。 - **左移** `将二进制数的各位向左移动。 - **右移** `>>`:将二进制数的各位向右移动。 - **无符号右移** `>>>`:与右移类似,但高位补0。 6. **比较运算符*...
本文将深入探讨Java中的各种运算符及其用法,并通过实例讲解如何正确地使用这些运算符来构建有效的表达式。 #### 二、表达式的基本概念 - **表达式**是由操作数和运算符组成的结构,它表示一种值。 - **操作数**...
在Java编程语言中,位运算符和移位运算符是处理二进制数据的重要工具,它们在底层操作中发挥着关键作用。本文将深入探讨这两个主题,并通过实例解析其工作原理。 位运算符直接作用于整数类型的二进制表示,包括与(&...
Java移位运算符是Java语言中的一种基本运算符,用于对二进制数进行位移操作。移位运算符主要包括左移位运算符()、右移位运算符(>>>)和带符号的右移位运算符(>>)。这些运算符可以单独用来处理int型整数。 1. ...
在Java编程语言中,关系与条件运算符是构建复杂逻辑判断的重要工具。关系运算符主要用于比较两个值之间的关系,而条件运算符则用于基于不同条件生成不同结果。以下是这些运算符的详细说明: **关系运算符**: 1. `>...
- 位运算符:如按位取反(`~`), 按位与(`&`), 按位或(`|`), 按位异或(`^`)以及位移运算符,如左移(`), 带符号右移(`>>`)和无符号右移(`>>>`)。位移运算符常用于快速计算乘法和除法。 2. 随机数(Random): Java中...
- Java中的位移运算符包括`>>`(右移)、`(左移)和`>>>`(无符号右移)。 #### 19. 位运算操作 - `>>>`为无符号右移运算符,用于将二进制数进行右移操作,高位补零。 #### 20. 浮点数取模运算 - 浮点数也可以...
6. 移位运算符:`、`>>`、`>>>` —— 从左到右执行,用于位移操作,如 `a 。 7. 关系运算符:`、`、`>`、`>=`、`instanceof` —— 从左到右执行,用于比较操作,如 `a 。 8. 相等运算符:`==`、`!=` —— 从左到右...