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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

关于无符号右移的位运算>>>,我们知道这个运算符在进行位运算时,最高位无论是1还是0,那么位移后最高位都会补0,对于负数则运算后则变成了正数,比如
-50>>>2=1073741811,那么原理是如此…………那么问题来了,无符号右移>>>到底有什么实际的应用??或者什么情况下用>>>这个符号??

评分

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

查看全部评分

12 个回复

倒序浏览
我只知道从那之后,我后面学的东西没用到这些.
回复 使用道具 举报
当数字的二进制最高位不被当成符号位,就分出无符号和根据最高位填充空余位的区别了。
回复 使用道具 举报 1 0
无符号右移在数据变换时非常重要。
比如对byte b;做无符号右移,在众多散列、加密、压缩、影音媒体编码、序列化格式都会用到。
如果没有这个无符号右移,就需要用更大的空间去做有符号右移。
比如byte就需哟short,short就需要int去做,浪费空间和时间。
所谓“左移两位是乘以4(2的2次方),右移两位是除以4” 原先都是指在无符号环境下成立。只因java没有无符号的基础类型,所以你理解成有符号下才是这样。
总之,无符号右移的应用场合大大多于有符号右移。。
回复 使用道具 举报
当一个数在除以2的整数次幂的时候,为了避免余数的影响,我们一般都会用>>>,其实和乘以2的整数次幂是正好相反的(<<)
回复 使用道具 举报
暂时还接触不到呢
回复 使用道具 举报
在进制转换的优化里面可以用到 请参阅毕老师day04的视频 进制转换优化
回复 使用道具 举报
慕容旺财 发表于 2015-7-4 22:47
在进制转换的优化里面可以用到 请参阅毕老师day04的视频 进制转换优化

谢谢提醒
回复 使用道具 举报
表示不会,进来学习下,
回复 使用道具 举报
进制运算,从各种进制间互相转换,遇到负数时就要使用无符号右移了。
回复 使用道具 举报
在基础视频里边进制转换会用到,在转换负数的时候,如果前边一直补1的话,那就算的停不下来了,
回复 使用道具 举报
不明觉厉.......................
回复 使用道具 举报
这个确实不太懂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马