java左移有什么意义 java位移运算符有什么意义
大家好,java左移有什么意义相信很多的网友都不是很明白,包括java位移运算符有什么意义也是一样,不过没有关系,接下来就来为大家分享关于java左移有什么意义和java位移运算符有什么意义的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
java左移运算符的问题,一定给分!
1.左移运算符
左移运算符用“<<”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n位,就相当于乘上2的n次方,例如下面的例子。
public class data17
{
public static void main(String[] args)
{
int a=2;
int b=2;
System.out.println("a移位的结果是:"+(a<<b));
}
}
运行结果
a移位的结果是:8
分析上面的程序段:
首先从本质上来分析,2的二进制是00000010,它向左移动2位,就变成了00001000,即8。如果从另一个角度来分析,它向左移动2位,其实就是乘上2的2次方,结果还是8。
2.右移运算符
右移运算符用符号“>>>”表示,是将运算符左边的对象向右移动运算符右边指定的位数,并且在高位补0,其实右移n位,就相当于除上2的n次方。
public class data18
{
public static void main(String[] args)
{
int a=16;
int b=2;
System.out.println("a移位的结果是:"+(a>>>b));
}
}
运行结果
a移位的结果是:4
分析上面的程序段:从本质上来分析,16的二进制是00010000,它向右移动2位,就变成了00000100,即4。如果从另一个角度来分析,它向右移动2位,其实就是除以2的2次方,结果还是4。
3.带符号的右移运算符
带符号的右移运算符用符号“>>”表示,是将运算符左边的运算对象,向右移动运算符右边指定的位数。如果是正数,在高位补零,如果是负数,则在高位补1,先看下面一个简单的例子。
public class data19
{
public static void main(String[] args)
{
int a=16;
int c=-16;
int b=2;
int d=2;
System.out.println("a的移位结果:"+(a>>b));
System.out.println("c的移位结果:"+(c>>d));
}
}
运行结果
a的移位结果:4
c的移位结果:-4
分析上面的程序段:
a的值是16,转换成二进制是00010000,让它右移两位成00000100即4。
c的值是-16,转换成二进制是11101111,让它右移一位成11111011即-4。
java中的<<是什么意思
<<:是逻辑左移,右边补0,符号位和其他位一样要移动。
数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
计算:3<< 2
3<< 2,则是将数字3左移2位
1、首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011
2、然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。
3、则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12。
扩展资料
Java语言支持的赋值运算符
=:简单的赋值运算符,将右操作数的值赋给左侧操作数。如C= A+ B将把A+ B得到的值赋给C。
+=:加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数。如C+= A等价于C= C+ A。
-=:减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数。如C-= A等价于C= C-
A。
*=:乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数。如 C*= A等价于C= C* A。
/=:除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数。如 C/= A等价于C= C/ A。
(%)=:取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数。如 C%= A等价于C= C%A。
<<=:左移位赋值运算符。如C<<= 2等价于C= C<< 2。
>>=:右移位赋值运算符。如C>>= 2等价于C= C>> 2。
&=:按位与赋值运算符。如 C&= 2等价于C= C&2。
^=:按位异或赋值操作符。如C ^= 2等价于C= C ^ 2。
|=:按位或赋值操作符。如C|= 2等价于C= C| 2。
参考资料:百度百科:Java
java中无符号右移有什么意义呢
无符号右移在数据变换时非常重要。
比如对byte b;做无符号右移,在众多散列、加密、压缩、影音媒体编码、序列化格式都会用到。
如果没有这个无符号右移,就需要用更大的空间去做有符号右移。
比如byte就需哟short,short就需要int去做,浪费空间和时间。
所谓“左移两位是乘以4(2的2次方),右移两位是除以4”原先都是指在无符号环境下成立。只因java没有无符号的基础类型,所以你理解成有符号下才是这样。
总之,无符号右移的应用场合大大多于有符号右移。。
java位移运算符有什么意义
给你举个例子,乘除法可以使用位运算,速度更快。很多底层的东西是用位运算去实现的,你去看看java的很多源码,还有IO流的处理有时候会用位运算,二进制文件的读写解析等都需要位运算,如果你了解底层的东西,你会位运算,这回让你的程序生涯更加精彩,望采纳,谢谢
好了,文章到这里就结束啦,如果本次分享的java左移有什么意义和java位移运算符有什么意义问题对您有所帮助,还望关注下本站哦!