java算法问题 在java里 i>>1 和 i⼀2 那个比较快 ? i>>1和i>>>1的区别是什么?

2024-11-18 02:48:03
推荐回答(3个)
回答(1):

当然是i>>1快 计算机的底层是二进制的 不管什么语言直接操作二进制肯定比操作十进制要快的
>> 和 >>> 都表示右移 但 >>> 表示无符合右移,例如
int a = -16; 11111111111111111111111111110000
a >> 1; 结果 -8 11111111111111111111111111111000
a >>> 1; 结果 2147483640 1111111111111111111111111111000 相当于
01111111111111111111111111111000

也就是说 >>> 不管你原来的是正数还是负数 它右移后都是在最高位补0
而 >> 会根据原来数的正负来决定最高位是补0(正数),还是补1(负数)
>> 与 >>> 只有在被移位的数是负数时结果不一样 当被移位的数为正数时结果是一样的

回答(2):

i>>1快,而且占用资源少。i>>1=i/2,i>>>1表示正负表示位也移动,如果是负数就变成正数了,而且当i为正数时i>>>1等于i/2,i为负数时不相等,因为表示负数的位也变成数值了

回答(3):

肯定是位运算的速度快了。

>> : 右移位运算 >>>:无符号右移为运算
>> 与>>>的最大区别:右移时,在高位的补充;>>是补充原来的高位数。>>>是补充0.