zz from http://backkid3120.blogbus.com/logs/38170968.html
public class ShiftTest {
public static void main(String[] args) {
//右移1位演示
int x=0x80000000;
System.out.println("x的十进制表示形式为:"+x);
System.out.println("x的二进制表示形式为:"+Integer.toBinaryString(x));
int y=x>>1;
System.out.println("y的十进制表示形式为:"+y);
System.out.println("y的二进制表示形式为:"+Integer.toBinaryString(y));
int z=x>>>1;
System.out.println("z的十进制表示形式为:"+z);
System.out.println("z的二进制表示形式为:"+Integer.toBinaryString(z));
//左移1位演示
int m=0xC0000000;
System.out.println("m的十进制表示形式为:"+m);
System.out.println("m的二进制表示形式为:"+Integer.toBinaryString(m));
int n=m<<1;
System.out.println("n的十进制表示形式为:"+n);
System.out.println("n的二进制表示形式为:"+Integer.toBinaryString(n));
}
}
//输出结果:
//x的十进制表示形式为:-2147483648
//x的二进制表示形式为:10000000000000000000000000000000
//y的十进制表示形式为:-1073741824
//y的二进制表示形式为:11000000000000000000000000000000
//z的十进制表示形式为:1073741824
//z的二进制表示形式为:1000000000000000000000000000000
//m的十进制表示形式为:-1073741824
//m的二进制表示形式为:11000000000000000000000000000000
//n的十进制表示形式为:-2147483648
//n的二进制表示形式为:10000000000000000000000000000000
总结:
1.Java中int占4个字节的内存空间,也就是32个二进制位,这也就是我们常说的二进制位。
而一个16进制位相当于4个二进制位,所以int占用8个16进制位。所以 int x=0x80000000;应该能看明白。
2.java中“左移位”运算符 “<<”,是将整型数据的二进制形式,各数位向左移动给定的位数。右边的空出的所有位数补0。如,a<<1,是将a的二进制表示形式,左移移位,右边补零。
3.java中“有符号右移位”运算符 “>>”,是将整型数据的二进制形式,各数位向右移动给定的位数。左边的空出的所有位数根据移位前,原来的内容,原来为0,就补0,原来为1就补1。
4.java中“无符号右移位”运算符 “>>>”,是将整型数据的二进制形式,各数位向右移动给定的位数。左边的空出的所有位数补0。
5.java中,移位运算符适用的数据类型有:byte short char int long。
6.对于低于int型的操作数,先转换为int型再移位。
即:原始数据类型执行算术运算(或按位运算),类型比int型小的(即char、byte、short、),在进行运算之前,这些值会自动提升成int型。参见:使用java原始数据类型的几处细节
7.对于int型整数移位,a>>b,系统先将b对32取模,得到的结果才是真正的移位的位数。例如:a>>33和a>>1的结果是一样的。而,a>>32的结果就是a。(即一个int型数是32位的,如果你移动了32位,那么所有数位都移出了,就没有什么意义了,所以系统会先将移动的位数对32取模)
8.对于long型整数移位,a>>b,系统先将b对64取模,得到的结果才是真正的移位的位数。
9.a>>1与a/2的结果是一样的,a<<1与a*2的结果是一样的。
总之,一个数右移n位的结果是这个数除以2的n次方。一个数左移n位的结果是这个数乘以2的n次方。所以,当我们需要用程序求2的n次方时,可以写成这样,iresult=1<<n;
分享到:
相关推荐
Java 移位运算符是编程语言中用于处理二进制位的一种高效操作方式,它们能够对整数类型(byte, short, int, long)的值进行左移、右移和无符号右移操作。理解这些运算符对于优化代码和深入理解计算机底层工作原理至...
控制程序流程<br>3.1 使用Java运算符<br>3.1.1 优先级<br>3.1.2 赋值<br>3.1.3 算术运算符<br>3.1.4 自动递增和递减<br>3.1.5 关系运算符<br>3.1.6 逻辑运算符<br>3.1.7 按位运算符<br>3.1.8 移位运算符<br>3.1.9 ...
5. 移位运算符:<<、>>、>>> 6. 比较运算符:==、!=、<、>、<=、>= 7. 逻辑运算符:&&、|| 8. 赋值运算符:=、+=、-=、\*=、/=、%=、<<=、>>=、&=、^=、|=、>> 二、Java 异常处理 Java 中的异常处理机制可以帮助...
移位运算符是指用于执行移位运算的符号,例如 <<、>>、>>> 等。这些符号可以用来将数字向左或向右移动指定的位数。 例如:int a = 10; int b = a << 2; // b 的值将是 40 六、三元运算符 三元运算符是指用于执行...
运算符还包括移位运算,如<<(左移)、>>(带符号位右移)和>>>(无符号右移)。移位运算需要注意符号位的处理,以及移位数量的模运算。 四、运算符和类型转换 运算符包括算术运算符、关系运算符、逻辑运算符等。在...
接下来,我们讨论Java中的移位运算符,包括左移(<<)、右移(>>)和无符号右移(>>>)。这些运算符用于处理整数类型的数据,尤其是二进制位串。 1. **左移运算符(<<)**:将数字的二进制位向左移动指定的位数。空...
本文将深入探讨Java中的三种移位运算符:左移运算符(<<),右移运算符(>>)以及无符号右移运算符(>>>)。 1. 左移运算符(<<) 左移运算符(<<)将一个数的二进制表示向左移动指定的位数。例如,如果`num`是一个...
Java移位运算符是Java语言中的一种基本运算符,用于对二进制数进行位移操作。移位运算符主要包括左移位运算符(<<)、右移位运算符(>>>)和带符号的右移位运算符(>>)。这些运算符可以单独用来处理int型整数。 1....
11. **位移运算符(<<, >>, >>>):** 左移位运算符将二进制位向左移动指定位数,右移位运算符则向右移动。无符号右移运算符对负数也会填零。这些都是双目的运算符,从左到右结合。 12. **关系运算符(<, >, <=, >=, ...
Java移位运算符是Java编程语言中的一种基本操作符,主要用于对二进制数的移位操作。Java中有三种移位运算符:左移运算符(<<)、带符号右移运算符(>>)和无符号右移运算符(>>>)。下面我们将详细介绍这三种移位...
在Java语言中,按位运算符(&、|、^)的优先级高于关系运算符(<、>、<=、>=),因此在执行按位运算时,需要注意运算符的优先级。 了解Java运算符优先级是非常重要的,掌握这些知识可以帮助我们编写更加正确和高效的...
- 移位运算符`<<`、`>>`和`>>>`用于位移操作,`<<`是左移,`>>`是带符号右移,`>>>`是无符号右移。 - 关系运算符`<`、`>`、`<=`、`>=`用于比较,`instanceof`用来检查对象是否属于特定类或其子类。 - 等于`==`和...
移位运算符包括 >>、<< 和 >>>,它们可以将左操作数向右或左移动,移位个数由右操作数决定。 赋值运算符也非常重要,最常用的赋值运算符是 “=”,扩展赋值运算符包括 +=、-=、*=、/=、%=、^=、&=、|=、>>=、<<= 和...
6. **移位运算<<、>>、>>>**:左移运算符(<<)将数字向左移动指定位数,右移运算符(>>)将数字向右移动指定位数,无符号右移(>>>)(在Java中)在向右移动时,高位用零填充。 7. **大小关系>、>=、<、<=**:这些比较...
这些运算符包括移位运算符(左移位`<<`,右移位`>>`和无符号右移位`>>>`)以及逻辑位运算符(非`~`,与`&`,异或`^`,或`|`)。理解这些运算符的用法和特性对于编写高效的代码至关重要。 1. **移位运算符**: - 左...
16. **带符号右移位运算符** (>>): 根据符号位扩展,向右移动指定位数,高位补0(正数)或1(负数)。 17. **无符号右移运算符** (>>>): 不考虑符号位,向右移动指定位数,高位用0填充。 18. **小于运算符** (<): ...
6. **移位运算**:`<<`、`>>`、`>>>` - `<<` 表示左移运算,将二进制位向左移动指定的位数。 - `>>` 表示有符号右移运算,将二进制位向右移动指定的位数,并保持最高位不变。 - `>>>` 表示无符号右移运算,将二...
- **移位运算符**:`<< >> >>>` - **比较运算符**:`< <= > >= instanceof !=` - **按位运算符**:`& ^ |` - **逻辑运算符**:`&& ||` - **条件运算符**:`?:` - **赋值运算符**:`=` 在实际编程中,理解这些运算符...
Java中的移位运算符包括: * 左移位(<<):从左到右的双目运算符,用于将变量左移指定的位数。 * 带符号右移(>>):从左到右的双目运算符,用于将变量右移指定的位数,并保留符号位。 * 无符号右移(>>>):从左...