java无符号的右移怎么解释,java中无符号右移有什么意义呢?

2020-11-22 21:18:05 字数 3454 阅读 5786

1楼:匿名用户

>>是带符号右移

>>>才是无符号右移..

带符号右移就是将那个数转为2进制然后在前面补0或1如果是正数就补0

负数补1

例如11 >> 2,则是将数字11右移2位计算过程:

11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010。

转换为十进制是2。

无符号右移与带符号右移的区别就是 无符号始终补0

java中无符号右移有什么意义呢?

2楼:匿名用户

无符号右移在数据变换时非常重要。

比如对byte b;做无符号右移,在众多散列、加密、压缩、影音**编码、序列化格式都会用到。

如果没有这个无符号右移,就需要用更大的空间去做有符号右移。

比如byte就需哟short,short就需要int去做,浪费空间和时间。

所谓“左移两位是乘以4(2的2次方),右移两位是除以4” 原先都是指在无符号环境下成立。只因java没有无符号的基础类型,所以你理解成有符号下才是这样。

总之,无符号右移的应用场合大大多于有符号右移。。

3楼:西南一少

我当初学java也有过类似的疑问,等到以后学jsp的时候,才发现,java基础里什么都有用,只是还没接触到而已

4楼:桂安卉势叶

举个例子

inta

=7>>1

,就是将7的二进制(111)向右移动一位,就是(011)就是3,所以int

a=3;

也可看成是除以二,如果左操作数是奇数就看做(a-1)÷2,是偶数就是a÷2

右移位运算就是将左操作数的比特位向右移动第二个操作数指定的位数,在二进制中,首位是用来表示正负的,若右移运算符的第一个操作数是正数,就填充0,是负数就填充1;

java 无符号右移

5楼:

首先纠正一个错误哈..

>>是带符号右移

>>>才是无符号右移..

带符号右移就是将那个数转为2进制然后在前面补0或1如果是正数就补0

负数补1

例如11 >> 2,则是将数字11右移2位计算过程:

11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010。

转换为十进制是2。

其他的 到网上一搜就有了。。

无符号右移与带符号右移的区别就是 无符号始终补0

6楼:隐匿踪迹

198的二进制为 0 1100 0110 向右移4位 等于0 0000 1100 =12;

向右移28位 等于 0 0000 0000 =0;

因为向右移一位,即去掉最后一位,再最前面不上0。

7楼:

198 = 1100 0110,一共八位, 第一行右移四位,右移时左边补0,变成 0000 1100即12,第二行右移28位,超过了已有的8位,只剩下补的零,即为0

"无符号右移"怎么用?

8楼:匿名用户

>>是带符号右移

>>>是无符号右移..

带符号右移就是将那个数转为2进制然后在前面补0或1如果是正数就补0

负数补1

例如11 >> 2,则是将数字11右移2位计算过程:

11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010。

转换为十进制是2。

无符号右移与带符号右移的区别就是 无符号始终补0

“无符号右移”怎么用?

9楼:匿名用户

>>是带符号右移

>>>是无符

号右移..

带符号右移就是将那个数转为2进制然后在前面补0或1如果是正数就补0

负数补1

例如11 >> 2,则是将数字11右移2位计算过程:

11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010。

转换为十进制是2。

无符号右移与带符号右移的区别就是 无符号始终补0

java中右移与无符号右移书上没解释

10楼:匿名用户

右移:第一个操作数的二进制位按第二个操作说的大小向右移位,左端用符号位补位:

int a=5; a>>2,表示a化为二进制然后右移2位,左端补0、

无符号右移,就是不管最高位是什么,左端一律补0

11楼:匿名用户

对于正数没有影响。对于负数。无符号的右移会把负数变成正数。

java 为什么没有 无符号左移<<<

12楼:匿名用户

因为左移是在后面补0

而右移是在前面边补1或0

有无符号是取决于数的前面的第一位是0还是1所以右移是会产生到底补1还是0的问题。

而左移始终是在右边补,不会产生符号问题。

所以没有必要无符号左移<<<。

无符号左移《和左移《是一样的概念

java 下面这个无符号右移的运算符是什么意思>>>

13楼:a肆夏

举个例子 int a =7>>1 , 就是将7的二进制(111)向右移动一位,就是(011)就是3,所以int a=3;

也可看成是除以二,如果左操作数是奇数就看做(a-1)÷2,是偶数就是 a÷

2右移位运算就是将左操作数的比特位向右移动第二个操作数指定的位数,在二进制中,首位是用来表示正负的,若右移运算符的第一个操作数是正数,就填充0,是负数就填充1;

14楼:匿名用户

右移多少就除以2的多少次方。

【java】java中为什么没无符号左移而只有无符号右移 15

15楼:

二进制码最高位是符号位,向右移位只会涉及值变换(用0补位),而向左移位,补位时会涉及符号变换问题,所以没有无符号左移。java小白一只,浅解。