「java左移右移」java左移右移写代码常用吗
本篇文章给大家谈谈java左移右移,以及java左移右移写代码常用吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、关于JAVA右移左移问题,不知道结果为什么是这样
- 2、java左移运算符的问题,一定给分!
- 3、java左移和右移有什么用?
- 4、求java大神告诉我 java中无符号左移或右移 是怎么回事呢? 特别是负数是怎么回事?谢谢了
- 5、a(1,2,3)java中什么意思
关于JAVA右移左移问题,不知道结果为什么是这样
楼主你好!问题是这样的:
先拿第一句来说
语句:System.out.println("000011112:" + (000011112));
中的00001111是八进制的数,能0开头的数是八进制数,而00001111用二进制表示为1001001001,数值前有22个0,一共有32位,左移2位后变为10010010,数值前有24个0,而10010010用十进制表示则为146。所以语句:System.out.println("000011112:" + (000011112));输出000011112:146。其他以0开头的数类推。但第二和第四个System.out.println()语句中的11000011是十进制的数,不能看作是二进制的也不能看作是八进制的数。楼主要看清。
java左移运算符的问题,一定给分!
1.左移运算符
左移运算符用“”表示,是将运算符左边的对象,向左移动运算符右边指定的位数,并且在低位补零。其实,向左移n 位,就相当于乘上2 的n 次方,例如下面的例子。
public class data17
{
public static void main(String[] args)
{
int a=2;
int b=2;
System.out.println("a 移位的结果是:"+(ab));
}
}
运行结果
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 移位的结果是:"+(ab));
}
}
运行结果
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 的移位结果:"+(ab));
System.out.println("c 的移位结果:"+(cd));
}
}
运行结果
a 的移位结果:4
c 的移位结果:-4
分析上面的程序段:
a 的值是16,转换成二进制是00010000,让它右移两位成00000100 即4。
c 的值是-16,转换成二进制是11101111,让它右移一位成11111011 即-4。
java左移和右移有什么用?
左移和右移并不常用,在一些特殊情况下才会使用,比如加解密时,会大量用到。
另外,偶尔在优化少数特殊代码的速度时可能用到,例如x*4就可以x2来代替,而后者比前者的速度快了好多倍。
求java大神告诉我 java中无符号左移或右移 是怎么回事呢? 特别是负数是怎么回事?谢谢了
有符号就带符号、没符号就补0。
转成2进制,或者自己用筷子摆几下,就清楚了。
借个别人写好的了
右移
System.out.println(-31);结果是-2,为什么会是-2呢?下面我们来看一下.System.out.println(Integer.toHexString(-3));得到-3的16进制为fffffffd(此为-3的补码,计算机中负数用补码表示).转换成2进制为
1111 1111 1111 1111 1111 1111 1111 1101
右移一位为
1111 1111 1111 1111 1111 1111 1111 1110
,显而易见此为-2补码.
左移
System.out.println(-31);左移相对来说比较简单.1111 1111 1111 1111 1111 1111 1111 1101左移一位为1111 1111 1111 1111 1111 1111 1111 1010,其为-6的补码.
无符号右移System.out.println(-31);1111 1111 1111 1111 1111 1111 1111 1101无符号右移,高位补0,01111 1111 1111 1111 1111 1111 1111 1110,其为2147483646的原码.
a(1,2,3)java中什么意思
<和是java基础里的东西,就是左移和右移,比如a=10,转换成二进制就是1010,a1就是10100,再转换回去是20,那a1就相当于a*2,a3相当于a*(2*2*2),右移a1相当于a/2,不过用和速度快一点,因为用*/最终是用转换成和的。
关于java左移右移和java左移右移写代码常用吗的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-17,除非注明,否则均为
原创文章,转载请注明出处。