有符号位移(<<、>>)与无符号位移(>>>)

一、区别

  • 无符号右移:正负数在最高位均补0,
  • 有符号右移:正数的最高位补0,负数的最高位补1

二、示例

1、正数

正数的有符号右移与无符号位移结果相同
以正整数10为例,其二进制表示:
0000 0000 0000 0000 0000 0000 0000 1010

1.1、有符号右移(>>)

有符号位移的最高位补0。

  • 10的二进制表示:0000 0000 0000 0000 0000 0000 0000 1010,
  • 10右移一位为:0000 0000 0000 0000 0000 0000 0000 0101(10进制的5)
    代码示例:
var b = 10;
console.log('b >> 1:', b >> 1);
> "b >> 1:" 5

1.2、无符号右移(>>>)

同有符号右移。
代码示例:

console.log('b >>> 1:', b >>> 1);
> "b >>> 1:" 5

2、负数

负数的有符号位移最高位补1,无符号右移的最高位补0。
以-10为例,其二进制表示为:
1111 1111 1111 1111 1111 1111 1111 0110

2.1、有符号右移(>>)

有符号位移的最高位补1。

  • -10的二进制表示:1111 1111 1111 1111 1111 1111 1111 0110,
  • -10右移一位为:1111 1111 1111 1111 1111 1111 1111 1011(10进制的-5)
    代码示例:
var c = -10;
console.log('c >> 1:', c >> 1);
> "c >> 1:" -5

2.2、无符号右移(>>>)

无符号位移的最高位补0。

  • -10的二进制表示:1111 1111 1111 1111 1111 1111 1111 0110,
  • -10右移一位为:0111 1111 1111 1111 1111 1111 1111 1011
    代码示例:
console.log('c >>> 1:', c >>> 1);
// js中int型为4个字节
> "c >>> 1:" 2147483643
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值