A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 忧伤 中级黑马   /  2013-6-2 10:22  /  1935 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 忧伤 于 2013-6-3 16:44 编辑

谁能给我说说>>>是什么吗 详细点还有用法

评分

参与人数 1黑马币 +2 收起 理由
Sword + 2

查看全部评分

15 个回复

倒序浏览
把数据用二进制的方式右移,前方补0
回复 使用道具 举报
二进制无符号右移,前面补0
回复 使用道具 举报
在计算机科学中,移位操作一般可以用来作乘以或除以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,取余数。

点评

>>是可以用于负数的吧???  发表于 2013-6-2 12:13

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报

左移位:<<,有符号的移位操作
左移操作时将运算数的二进制码整体左移指定位数,左移之后的空位用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

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
无符号右移,左边直接补0
如果是>>的话,左边是按最高位补0或1
回复 使用道具 举报
哥,这些基础问题,你仔细听毕老师讲课
>>>是无符号右移  还有个>>是带符号右移
>>就是将数值转为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

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
楼主,提问这样的问题是不能给分的,多看看视频,里面讲的很清楚了
回复 使用道具 举报
>>>是无符号右移  
>>就是将数值转为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


评分

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报

楼主:这是位运算符
        <<左移,3<<2   =  12   (0011——1100),越往左移数越大
                规律:3<<n位,也就是3*2的n次幂
        >>右移,6>>2   =   1     (0110——0001),越往右移数越小
                规律:6>>n位,也就是6除以2的n次幂,取整数舍弃小数
        >>>无符号右移,无论正负,右移后空出的位都用0来补

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
如果问题已解决,请重新编辑帖子改为“已解决”,否则继续追问,谢谢合作!
关于把"未解决"的问题修改成"已解决"的说明 :http://bbs.itheima.com/thread-49464-1-1.html
回复 使用道具 举报
如果问题已解决,请重新编辑帖子改为“已解决”,否则继续追问,谢谢合作!
关于把"未解决"的问题修改成"已解决"的说明 :http://bbs.itheima.com/thread-49464-1-1.html
回复 使用道具 举报
无符号右移,不论原来的数是正数还是负数,都用0补齐。
回复 使用道具 举报
无符号右移运算符,

用于二进制数的移位,

数据进行右移时,高位出现的空位,无论原高位时什么,空位都用0补
回复 使用道具 举报
无符号右移(无论最高位是什么,都由0来补齐)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马