java算法问题 在java里 i>>1 和 i/2 那个比较快 ? i>>1和i>>>1的区别是什么?
答案:3 悬赏:60 手机版
解决时间 2021-11-07 07:03
- 提问者网友:了了无期
- 2021-11-06 22:51
java算法问题 在java里 i>>1 和 i/2 那个比较快 ? i>>1和i>>>1的区别是什么?
最佳答案
- 五星知识达人网友:妄饮晩冬酒
- 2021-11-07 00:16
当然是i>>1快 计算机的底层是二进制的 不管什么语言直接操作二进制肯定比操作十进制要快的
>> 和 >>> 都表示右移 但 >>> 表示无符合右移,例如
int a = -16; 11111111111111111111111111110000
a >> 1; 结果 -8 11111111111111111111111111111000
a >>> 1; 结果 2147483640 1111111111111111111111111111000 相当于
01111111111111111111111111111000
也就是说 >>> 不管你原来的是正数还是负数 它右移后都是在最高位补0
而 >> 会根据原来数的正负来决定最高位是补0(正数),还是补1(负数)
>> 与 >>> 只有在被移位的数是负数时结果不一样 当被移位的数为正数时结果是一样的
>> 和 >>> 都表示右移 但 >>> 表示无符合右移,例如
int a = -16; 11111111111111111111111111110000
a >> 1; 结果 -8 11111111111111111111111111111000
a >>> 1; 结果 2147483640 1111111111111111111111111111000 相当于
01111111111111111111111111111000
也就是说 >>> 不管你原来的是正数还是负数 它右移后都是在最高位补0
而 >> 会根据原来数的正负来决定最高位是补0(正数),还是补1(负数)
>> 与 >>> 只有在被移位的数是负数时结果不一样 当被移位的数为正数时结果是一样的
全部回答
- 1楼网友:白昼之月
- 2021-11-07 00:43
肯定是位运算的速度快了。
>> : 右移位运算 >>>:无符号右移为运算
>> 与>>>的最大区别:右移时,在高位的补充;>>是补充原来的高位数。>>>是补充0.
>> : 右移位运算 >>>:无符号右移为运算
>> 与>>>的最大区别:右移时,在高位的补充;>>是补充原来的高位数。>>>是补充0.
- 2楼网友:神也偏爱
- 2021-11-07 00:24
i>>1快,而且占用资源少。i>>1=i/2,i>>>1表示正负表示位也移动,如果是负数就变成正数了,而且当i为正数时i>>>1等于i/2,i为负数时不相等,因为表示负数的位也变成数值了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯