黑马程序员技术交流社区

标题: 关于>>的问题? [打印本页]

作者: HeiMaYSL    时间: 2012-4-24 15:17
标题: 关于>>的问题?
a>>1 是不是等于 a/2 吗?a>>1 是什么运算?是怎么得来的?不解啊?那么<<又是什么呢?
作者: 耿少雄    时间: 2012-4-24 15:22
是的!在数据以2进制存放时候,右移运算相当于除以2.

比如0000  0000  0000  1010
        000  0000  0000  0101   0

这个就是右移运算的小例子。
<<是左移运算。

位移运算一般在进制转换时候,能够方便运算和减少运算次数,达到优化!
作者: Evangelvii    时间: 2012-4-24 15:22
那是位移运算符
>>(右移)
<<(左移)
>>>(右移,右边空出的位以0填充)
a>>1就是a的内容右移一位
作者: 周海诚    时间: 2012-4-24 15:31
二个大于或小于号在JAVA里是位移运算符
>>(右移)
<<(左移)
a右移一位
作者: 真真姐    时间: 2012-4-24 15:31
本帖最后由 杨国祯 于 2012-4-24 16:09 编辑

这是位运算符,也成为移位运算,也就是 把数字转换成二进制后,进行移位运算,
a>>1就是整体向右移动一位
这里分两种  <<   >> 两种符号
你提到的是右移运算符 >>

1)右移的规则:符号位不变(正负不变),向右边移出x位,同时最左边补上符号位

2)运算规则:
按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1

3)总结
右移一位相当于除2,右移n位相当于除以2的n次方。 给你举一个特殊的例子
25 >> 2(25为int型)
A、把25转换为二进制:这个会吧00000000 00000000 00000000 00011001
B、把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。00000000 00000000 00000000 00000110
C、转换为十进制: 6

这个很清晰了吧,左移类似但不一样!以后有时间再写!






作者: Friends★    时间: 2012-4-24 15:32
你其实记住一个结论就可以了,

>>就是除以2的移动的位数次幂,除不尽的取整。
<<就是乘以2的移动的位数次幂
作者: liqian    时间: 2012-4-24 15:35
>>是右移运算,它的通用格式如下所示:value >> num 。num 指定要移位值value 移动的位数。也就是,右移运算符>>使指定值的所有位都右移num位。将值每右移一次,就相当于将该值除以2并且舍弃了余数。你可以利用这个特点将一个整数进行快速的2的除法。当然,你一定要确保你不会将该数原有的任何一位移出。
<<是左移运算,它的通用格式如下所示:value << num。num 指定要移位值value 移动的位数。
java中的基本移位运算符:
1.位逻辑运算符:位逻辑运算符有“与”(AND)、“或”(OR)、“异或(XOR )”、“非(NOT)”,分别用“&”、“|”、“^”、“~”表示。
2.左移运算<<,每左移一个位,高阶位都被移出(并且丢弃),并用0填充右边;
  右移运算>>,注意>>运算符总是自动地用它的先前最高位的内容补它的最高位,这样做保留了原值的符号;
  无符号右移运算符>>>,它总是在左边补0。


作者: 李斌    时间: 2012-4-24 15:37
这是我的学习总结 与你分享
位运算符包括>>、>>>(右移)、<<(左移)
<<:其实是乘以2的移动的位数次幂;
>>:就是乘以2的移动的位数次幂;
注意事项
>>:最高位补什么由原数据最高位值定,如果最高位0则补0,若为1则补1;
>>>:无论最高位为1或0,都是拿0补
例子
6>>2
0000-0000 0000-0000 0000-0000 0000-0110   6的二进制右移动之前
000000-0000 0000-0000 0000-0000 0000-0110   6的二进制右移动之后 注意前面补2个0

得到0000-0000 0000-0000 0000-0000 0000-0001 该值等于1
所以6>>2位 等于1
同理6>>1 =3
楼主多自己画一下 就掌握了
{:soso_e130:}



作者: 李斌    时间: 2012-4-24 15:40
上面打错了 不好意思
<<:其实是乘以2的移动的位数次幂;如 6<<1=6*2
>>:就是除以2的移动的位数次幂:6>>1=6/2;




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