原码什么的还是挺多的给你一个链接你看看吧
带不带符号右移都是差不多的只不过不带符号忽视了符号位,你自己上機试一下就知道了
你对这个回答的评价是
原码什么的还是挺多的给你一个链接你看看吧
带不带符号右移都是差不多的只不过不带符号忽视了符号位,你自己上機试一下就知道了
你对这个回答的评价是
我们知道,在Java中常用的位移运算有三种分别是:<<(左移)、>>(带符号右移)和>>>(無符号右移)。
这一次我们来看一下其中的带符号右移运算符>>
在负数计算时的效果。
首先是一段测试代码:
读者可以先思考一下输出為多少?输出:
看到这个结果可能读者就有点疑问了,一般来说左移右移不是相当于乘以2或者除以2么,为什么这里会出现-3呢
我们首先需要明确的是,>>
运算符叫做带符号右移也即为其在运算时的规则为在要处理的数字的左端补一个等于符号位的数字,即为正数补0负數补1。可以记为:符号位不变左边补上符号位。
下面一个问题就是这个运算符所操作的对象是什么呢?可能第一反应是:不就是左边嘚这个数么这么说当然没有问题,但是计算机中存储的数字并不是直观上我们看到的这个数计算机中所存储和操作的是数字的补码,洳果是正数的话就不用考虑这么多,但是如果是负数的话就要注意了。
首先我们看一下-5的形式:
那么现在看一下,结果-3已经出现了
因此,在遇到负数的位移运算的时候写代码之前还是要好好考虑一下的。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。