黑马程序员技术交流社区

标题: >>>谁能给我说说这是什么吗 [打印本页]

作者: 忧伤    时间: 2013-6-2 10:22
标题: >>>谁能给我说说这是什么吗
本帖最后由 忧伤 于 2013-6-3 16:44 编辑

谁能给我说说>>>是什么吗 详细点还有用法
作者: 孙茜茜    时间: 2013-6-2 10:41
把数据用二进制的方式右移,前方补0
作者: 风爽    时间: 2013-6-2 10:51
二进制无符号右移,前面补0
作者: 杨青    时间: 2013-6-2 10:55
在计算机科学中,移位操作一般可以用来作乘以或除以2的n次方的操作。
比如:
50的二进制码是00110010,那么50>>1就变成了00011001,正好是25。
24的二进制码是00011000,那么24<<2就变成了01100000,正好是96。

但负数就不能用<<,>>了。
比如:
-50的二进制码是11001110,-50>>1,就变成了01100111,这是103的二进制码。
-24的二进制码是11101000,-24<<2,就变成了10100000,这是160的二进制码。

所以,计算机还提供了一种算术移位,即移位时不改变符号位。
比如-50>>>1,变成11100111,这正好是-25的二进制码。

具体到这个题目,就是将产生的随机数除以2,再用商除以101,取余数。
作者: youngster    时间: 2013-6-2 10:55

左移位:<<,有符号的移位操作
左移操作时将运算数的二进制码整体左移指定位数,左移之后的空位用0补充

右移位:>>,有符号的移位操作
右移操作是将运算数的二进制码整体右移指定位数,右移之后的空位用符号位补充,如果是正数用0补充,负数用1补充

楼主提问的是无符号移动:
无符号的移位只有右移,没有左移使用“>>>”进行移位,都补充0

例如:
public static void main(String[] args)
{
System.out.println(6>>>2);
System.out.println(-6>>>2);
}
结果:

1
1073741822

分析:

? ? 00000000 00000000 00000000 00000110 +6在计算机中表示方法
0000000000 00000000 00000000 00000110 右移两位,正数补0,结果为1


作者: HM张博文    时间: 2013-6-2 10:58
无符号右移,左边直接补0
如果是>>的话,左边是按最高位补0或1
作者: 赵乐    时间: 2013-6-2 10:59
哥,这些基础问题,你仔细听毕老师讲课
>>>是无符号右移  还有个>>是带符号右移
>>就是将数值转为2进制的时候 如果是正数在前面补0    如果是负数在前面补1
比如 6>>2 将数字6右移2位
6的2进制表现形式:0000 0000 0000 0000 0000 0000 0000 0110右移2位就是把末尾处10移除, 然后因为是带符号右移所以在首位补0
结果就是:            0000 0000 0000 0000 0000 0000 0000 0001 十进制就是1

如果是-6                1111 1111 1111 1111 1111 1111 1111 1010 如果是>>2  首位就需要补1   而>>>就是无符号右移 ,首位始终补0

作者: Sword    时间: 2013-6-2 12:05
楼主,提问这样的问题是不能给分的,多看看视频,里面讲的很清楚了
作者: 精彩生活向钱看    时间: 2013-6-2 13:02
>>>是无符号右移  
>>就是将数值转为2进制的时候 如果是正数在前面补0    如果是负数在前面补1
举个例子你就明白了 6>>2 将数字6右移2位
6的2进制表现形式:0000 0000 0000 0000 0000 0000 0000 0110右移2位, 然后因为是带符号右移所以在首位补0
结果就是:            0000 0000 0000 0000 0000 0000 0000 0001 十进制就是1

如果是-6                1111 1111 1111 1111 1111 1111 1111 1010 如果是>>2  首位就需要补1   而>>>就是无符号右移 ,首位始终补0


评分
作者: 孔雀东南飞    时间: 2013-6-2 13:34

楼主:这是位运算符
        <<左移,3<<2   =  12   (0011——1100),越往左移数越大
                规律:3<<n位,也就是3*2的n次幂
        >>右移,6>>2   =   1     (0110——0001),越往右移数越小
                规律:6>>n位,也就是6除以2的n次幂,取整数舍弃小数
        >>>无符号右移,无论正负,右移后空出的位都用0来补
作者: Sword    时间: 2013-6-2 14:44
如果问题已解决,请重新编辑帖子改为“已解决”,否则继续追问,谢谢合作!
关于把"未解决"的问题修改成"已解决"的说明 :http://bbs.itheima.com/thread-49464-1-1.html

作者: Sword    时间: 2013-6-2 14:48
如果问题已解决,请重新编辑帖子改为“已解决”,否则继续追问,谢谢合作!
关于把"未解决"的问题修改成"已解决"的说明 :http://bbs.itheima.com/thread-49464-1-1.html
作者: peerless2012    时间: 2013-6-2 23:04
无符号右移,不论原来的数是正数还是负数,都用0补齐。
作者: Super_Class    时间: 2013-6-3 08:01
无符号右移运算符,

用于二进制数的移位,

数据进行右移时,高位出现的空位,无论原高位时什么,空位都用0补
作者: 曹世明    时间: 2013-6-3 09:48
无符号右移(无论最高位是什么,都由0来补齐)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2