java位移运算符

比如说 int n=7>>2 中 0000 0111从哪开始向后移动两位补0
int n=7>>-2中 0000 0111从那开始向后补1
移动运算符的符号指的是哪个?

 学习Java本来就是一件日积月累的事情,或许你通过自学能掌握一些皮毛技术,通过Java学习机构学到Java的一些基本大面,但想要做到精通,还是需要自己技术的日积月累和工作经验的不断积累。
  今天给大家分享的技术知识是:Java中的位移运算符!
  1) “有符号”左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。
  左移移位相当于乘以2,例如
  3 << 2 //12 则是将数字3左移2位 3*2*2 = 3*(2的2次方)
  分析:首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12.数学意义:
  在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
  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.转换为十进制是3.数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。
  3) Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0
  4)右移一位相当于除以2,左移一位(在不溢出的情况下)相当于乘以2;移位运算速度高于乘除运算。
  5)位运算符的优先级
  ~的优先级最高,其次是<<、>>和>>>,再次是&,然后是^,优先级最低的是|。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-14
比如
int=7>>2
这儿的7用二进制表示是0000 0111 所有的向右移两位, 前面补0, 也就是 0000 0001 最后结果为1.
第二个, 右移负数我没研究过, 下次有时间了再看.
第三个. 移动运算符的符号指的是带符号数的移位, 正数符号位是0, 负数符号位是1.

java位移运算符
1) “有符号”左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。左移移位相当于乘以2,例如 3 << 2 \/\/12 则是将数字3左移2位 3*2*2 = 3*(2的2次方)分析:首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧...

java中的<<是什么意思?
位移动运算符:<<表示左移, 左移一位表示原来的值乘2.例如:3 <<2(3为int型)1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,3)在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 000...

java中位移操作和乘法的区别
<< : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >> 1,相当于num除以2 >>> : 无符号右移,忽略符号位,空位都以0补齐 对于:>>> 无符号右移,忽略符号位,空位都以0补齐 value >>> num -- num 指定要移位值value 移动的位数。无符号右...

java 中 <<是什么意思 例如 2<<3 为什么回等于 16 为什么是2*8的结果...
这是java中的位移运算,2<<3 即相当于2*2的3次方。数值2在计算机中是以二进制表示的,即00000010,左边是高位,右边是低位,向左移1位即相当于在原来的基础上乘以2,故移3次就乘以3次2,加上自己本身的值就是2,这样等于 2 * 2 * 2 * 2 = 16 ...

Java中的位移运算中的>>(逻辑右移)和>>>(算术右移)的区别?
逻辑右移是将各位依次右移指定位数,然后在左侧补0,算术右移是将各位依次右移指定位数,然后在左侧用原符号位补齐

JAVA里面的位运算符>>,<<,>>>是什么意思,请举个列子具体说明一下?_百 ...
java 中:>>带符号右移 (n>>2 将整型值带符号右移2位 )<<带符号左移 (n<<2 将整型值带符号左移2位 )>>>无符号右移 (n>>>2 将整型值无符号右移2位 ) 在32位系统中任何数左移(右移)32位还是它本身 例如:�6�1a=a<<2将a...

java 中2<<<3是什么意思
确定你写的这个运算符是正确的吗?貌似java中没有这样的运算符哦!java的移位运算符只有三种:“<< (带符号左移运算符)” “>> (带符号右移运算符)” “>>> (无符号右移运算符) ”。2>>>3为0,但是2<<<3是错的。望采纳

Java中,位运算符>>,右移时左边何时补0,何时补1
“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C或C++没有的。若对char,byte或者short进行移位处理,那么在移位进行之前,它们会...

Java中,位运算符>>,右移时左边何时补0,何
举个例子:2左移动3位 2(十进制)=00000010(二进制)二进制00000010向左移动三位变成了00010,超出了8位,相当于删除前三个字符位,删除之后又由于不满足8位,后面填0,变成00010000 00010000(二进制) = 16(十进制)

JAVA中的“>>”和“>>>”运算符
1、>>:右移运算符,num >> 1,相当于num除以2。按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。符号位不变。如:-1在32位二进制中表示为:11111111 11111111 11111111 11111111 -1>>1:按位右移,符号位不变,仍旧得到11111111 11111111 ...

相似回答