黑马程序员技术交流社区

标题: 位数运算不懂 [打印本页]

作者: 牛刚    时间: 2013-1-20 19:15
标题: 位数运算不懂
  6>>2=1  就是6/2(2)(次幂)=1这里不明白怎么等于1呀
作者: 柴乔军    时间: 2013-1-20 19:20
0110是十进制的6,向右移动两位就是0001,另一个1溢出了,就是1了~
当初学单片机的时候。。。汇编语言就是这么进行位运算的
作者: 张洪慊    时间: 2013-1-20 19:36
6-->补码:    00000 110
右移一位:    00000 011(如果负数前面补1)
在右移一位: 00000 001 (1)
正数原码,反码,补码均相同   
还要注意一点:
对于int型整数移位 例:a>>b 系统先将b对32取模(b%32),得到的结果才是真正的移位的位数
对于long型整数移位,则b%64   
---<java就业培训教程>
作者: 郭孟涛    时间: 2013-1-20 19:39
>>是位运算中的向右移动二进制数运算
6的二进制是0000 0110。向右移动两位就是0000 0001 ,前面用00补充,后面的10舍去。二进制0000 0001就是10进制的1

作者: 折纸时代    时间: 2013-1-20 19:48
6>> 2 = 1
上面运算表达式的意思是 6右移两位  
相当于6 /  (2)2    //(2)/2  是2的2次幂 就是4
6/4 等于几?   1.x  因为你的运算数都是int类型的 所以结果也是取整数. 就是1.

如果 二进制计算的话.
6的二进制是 110  
110 右移2为 就是移除最右边的两个数位 结果是 001
001的十进制就是1 .




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