位移操作有效位数的问题,解决马上给分!高人救命呀! 如果说是有效位数,那么如果是2^32-1这个数,我左移1位不就超出了吗?为什么说尽有较低的5个位有用?可以避免你移动超过int所具备的位数?如果能够帮我分析解决再给100分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以上是thinkinjava2的原文我个人认为应该是31位,而不是5个位有用 who may help me! Heartforever +i++:X+Rt:tXWRMR, .YRiIYRMViitVXRWRYMI++++itMM.. .Y+,.,X::,,,YMMMMMMMMRVItXMti :X+:,X:,. .,iiIRMWMMMBBRMMBY. tR+:I:i:+Y:IitYVYMMMMMMMMRi. .+RXt:,::.::XXIBMMMMMMMMM+: ,RRXitY+,.::RWMMMMMMMMt. VYI:::,..:tVMMMMMMBY+. .VBBW:::::,i.MMMMMBi:. .tWRRVi:::.X:VMMMMMMY. ,+i+:,XYtt+:,i:,MMMBR: ...VV..:..:.tt::++:+,RMYMV. :M:::..:,.:,,,.+t+++Ytt.,+:tRt:,.:,.:,:.:+.,:++tit,:tXt:,:,:.:.,,+,:+YRY, :++:::.,:.:.::+:iMi ,Ri:::,:::::::+Ii ,+:Xii:,,::I:tit,. :BBt,:+::,::i+. :BWXX::::::iX. :BWVIi++t+:V+ WBXtItii+iWI. :MWIYIti+iVRY, RBXVYItiiIYXWI, :MRWWVYttttIIXWt. .XMBRRXIti++itIXW, .BMBBRVIi+::+ttXX. ,MMBRXYti:::+tIW: tMMRWYti+++ittXV +MRVYti+++ittWI .VMWVtiiiiiitIR, .XBBWVttttttttXRv .,WBRBXVtttttttIWt :RWXWBXYtttttttYR: .iRWVIiBWYIttttttYW, .tWVYti:WRVIttittIVV .:,, tWVIi++:XRVIIttttIXY ..:YYtYi:tittV, tXYti+++tWRVYttittYWIiIYYVItt:iXW+.... :WIt+++iXRBBVYItitIYXXYti+iIYt++:IMRi:..:Xti+:+tRWt:BVYItitIYWVIIIYXXWXVXYt+i+IV:.tYi+::IWI:::BVVItitIXBRVIt:::::::tIVXRiXt:Viii++i:itIXBXVttitVW, tBIX.XIiXIttIVRBRBIItttIRX :VX.,tXXWWWVi+. RXXItiYRV .. ,BWYi+IRX tBYiitWB, .WVtiiIRI VWtiiiIB, ,BIiiiiWt .BViiiiYV XXtii+YV iRiii+YY :Btii+XI Wtii+R: XY+t+B. YX+tYR. tX+iWV iXi+RI tYiIXX ,XtiIXRt. :BIVYRWIV +RYXXWiYR. iWIVYtXMV tBYItRtM+ XBWttX:B: YYBXXYR:,R: tIYYYIY: i: 楼主,我是按下面这样理解的:希望我说的是对的,如果不对,我们再一起探讨:为什么说仅有较低的5个位有用?因为java中的int正好是32位,所以为了避免移动超过int具备的位数,则在二进制基础上只能移动5位,即2的5次方!如下:(-1)>>>=10-1的补码形式是:1111 1111 1111 1111 1111 1111 1111 1111无符号扩展右移10位就是: 0000 0000 0011 1111 1111 1111 1111 1111 这样输出就是4194303因为0<10<2的五次方,即10的二进制表示为1010,位数小于5,所以有效!如果是32,则33表示为10 0001,超过了5位,所以只有低5位有效,所以相当于0 0001则-1>>>=1就是2147483647不知楼主是否能看懂我的意思! 书上说的低5位有效,就是将位移符号右边的数也用二进制表示,这样int只能移动5位二进制数,即2的五次方,为了控制不超过int的范围,则只能有低5位有效! 楼上的大大,你的qq多少,我+你使这个意思嘛,用公式表示如下:(int number)(Shift operator)(右操作数)其中的右操作数最大值为2^5因该是这个意思吗? 楼上的大大,你的qq多少,我+你使这个意思嘛,用公式表示如下:(int number)(Shift operator)(右操作数)其中的右操作数最大值为2^5因该是这个意思吗?若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会用到=====2的5次方是32,而int的位数刚好是32个位,????????=====那么作者所说的低5位有用,就是说2^5中的指数5啊?这种说法有点猜出来的感觉哦! 求大神看看这是哪错了? java的窗口内容如何刷新? 谁知道 “Java 2 SDK, Standard Edition v1.4.1 documentation”CHM版下载地址? 【转载】初学者怎样学习编程? 请各个高手给于帮助! 如何实现目录浏览对话框 BIRT怎么把参数传到报表文件中去啊?是通过超连接吗? String问题,关于charset 如何保护你的Java源码? 说白了,就是白送呀,靠 取resultset中数据问题(高分求) 问一个关于readObject()的问题
我个人认为应该是31位,而不是5个位有用
Heartforever +i++:X+Rt:tXWRMR,
.YRiIYRMViitVXRWRYMI++++itMM..
.Y+,.,X::,,,YMMMMMMMMRVItXMti
:X+:,X:,. .,iiIRMWMMMBBRMMBY.
tR+:I:i:+Y:IitYVYMMMMMMMMRi.
.+RXt:,::.::XXIBMMMMMMMMM+:
,RRXitY+,.::RWMMMMMMMMt.
VYI:::,..:tVMMMMMMBY+.
.VBBW:::::,i.MMMMMBi:.
.tWRRVi:::.X:VMMMMMMY.
,+i+:,XYtt+:,i:,MMMBR:
...VV..:..:.tt::++:+,RMYMV.
:M:::..:,.:,,,.+t+++Ytt.,+:
tRt:,.:,.:,:.:+.,:++tit,
:tXt:,:,:.:.,,+,:+YRY,
:++:::.,:.:.::+:iMi
,Ri:::,:::::::+Ii
,+:Xii:,,::I:tit,.
:BBt,:+::,::i+.
:BWXX::::::iX.
:BWVIi++t+:V+
WBXtItii+iWI.
:MWIYIti+iVRY,
RBXVYItiiIYXWI,
:MRWWVYttttIIXWt.
.XMBRRXIti++itIXW,
.BMBBRVIi+::+ttXX.
,MMBRXYti:::+tIW:
tMMRWYti+++ittXV
+MRVYti+++ittWI
.VMWVtiiiiiitIR,
.XBBWVttttttttXRv
.,WBRBXVtttttttIWt
:RWXWBXYtttttttYR:
.iRWVIiBWYIttttttYW,
.tWVYti:WRVIttittIVV .:,,
tWVIi++:XRVIIttttIXY ..:YYtYi:tittV,
tXYti+++tWRVYttittYWIiIYYVItt:iXW+....
:WIt+++iXRBBVYItitIYXXYti+iIYt++:IMRi:.
.:Xti+:+tRWt:BVYItitIYWVIIIYXXWXVXYt+i+IV:
.tYi+::IWI:::BVVItitIXBRVIt:::::::tIVXRiXt
:Viii++i:itIXBXVttitVW, tBIX
.XIiXIttIVRBRBIItttIRX :VX
.,tXXWWWVi+. RXXItiYRV ..
,BWYi+IRX
tBYiitWB,
.WVtiiIRI
VWtiiiIB,
,BIiiiiWt
.BViiiiYV
XXtii+YV
iRiii+YY
:Btii+XI
Wtii+R:
XY+t+B.
YX+tYR.
tX+iWV
iXi+RI
tYiIXX
,XtiIXRt.
:BIVYRWIV
+RYXXWiYR.
iWIVYtXMV
tBYItRtM+
XBWttX:B:
YYBXXYR:,R:
tIYYYIY: i:
为什么说仅有较低的5个位有用?
因为java中的int正好是32位,所以为了避免移动超过int具备的位数,则在二进制基础上只能移动5位,即2的5次方!如下:
(-1)>>>=10
-1的补码形式是:1111 1111 1111 1111 1111 1111 1111 1111
无符号扩展右移10位就是: 0000 0000 0011 1111 1111 1111 1111 1111 这样输出就是4194303
因为0<10<2的五次方,即10的二进制表示为1010,位数小于5,所以有效!
如果是32,则33表示为10 0001,超过了5位,所以只有低5位有效,所以相当于0 0001
则-1>>>=1就是2147483647不知楼主是否能看懂我的意思!
使这个意思嘛,用公式表示如下:
(int number)(Shift operator)(右操作数)
其中的右操作数最大值为2^5
因该是这个意思吗?
使这个意思嘛,用公式表示如下:
(int number)(Shift operator)(右操作数)
其中的右操作数最大值为2^5
因该是这个意思吗?
若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会用到
=====
2的5次方是32,而int的位数刚好是32个位,????????
=====
那么作者所说的低5位有用,就是说2^5中的指数5啊?
这种说法有点猜出来的感觉哦!