zoukankan      html  css  js  c++  java
  • 按位左右移位运算符

    按位左右移位运算符

     
    >> << 这两个运算符偶一直不会用

    今天在群里总算长见识了。。虽然不常用记下来

    << 1 = * 2
    << 2 = * 4
    << 3 = * 8
    << 4 = * 16
    ...
    >> 1 = / 2
    >> 2 = / 4
    >> 3 = / 8
    >> 4 = / 16
    ...

    失忆的猪猪(3224897) 17:04:54

    移位运算符包括:
    “>> 右移”;“<< 左移”;“>>> 无符号右移”

    例子:
    -5>>3=-1
    1111 1111 1111 1111 1111 1111 1111 1011
    1111 1111 1111 1111 1111 1111 1111 1111
    其结果与 Math.floor((double)-5/(2*2*2)) 完全相同。

    -5<<3=-40
    1111 1111 1111 1111 1111 1111 1111 1011
    1111 1111 1111 1111 1111 1111 1101 1000
    其结果与 -5*2*2*2 完全相同。

    5>>3=0
    0000 0000 0000 0000 0000 0000 0000 0101
    0000 0000 0000 0000 0000 0000 0000 0000
    其结果与 5/(2*2*2) 完全相同。

    5<<3=40
    0000 0000 0000 0000 0000 0000 0000 0101
    0000 0000 0000 0000 0000 0000 0010 1000
    其结果与 5*2*2*2 完全相同。

    -5>>>3=536870911
    1111 1111 1111 1111 1111 1111 1111 1011
    0001 1111 1111 1111 1111 1111 1111 1111

    无论正数、负数,它们的右移、左移、无符号右移 32 位都是其本身,比如 -5<<32=-5、-5>>32=-5、-5>>>32=-5。
    一个有趣的现象是,把 1 左移 31 位再右移 31 位,其结果为 -1。
    0000 0000 0000 0000 0000 0000 0000 0001
    1000 0000 0000 0000 0000 0000 0000 0000
    1111 1111 1111 1111 1111 1111 1111 1111

    胡矿(45198841) 17:06:08
    对于10进制的数字,左移一位就是在末尾加上一个0,数值变大10倍。
    同理,对于二进制数字,左移一位是在末尾加上一个0,数值变大2被。
    所以 x << 3,x就变大 2^3 倍,就是 8*x
    右移同理

    N神 17:03:00
    编程什么时候会用到 >>呢 ?

    zikey 17:04:30
    平时我们不常用到
    但是这个的速度要快于乘法或者除法的乘或者除2的次幂

    zikey 17:05:17
    一般情况下你要乘或者是除以数字是2的次方的话都可以用的
    执行速度快
    大部分转载 小部分自写
  • 相关阅读:
    WEB前端第六十二课——自封装Ajax、跨域、分页
    WEB前端第六十一课——xhr对象POST请求、xhr兼容性、timeout、progress
    WEB前端第六十课——原生Ajax与HTTP协议
    WEB前端第五十九课——时间戳、数据交互小案例
    考研日记录
    云栖大会day2 下午
    云栖大会day2总结 上午
    云栖大会day1 下午
    云栖大会day1 上午
    学习记录3
  • 原文地址:https://www.cnblogs.com/8586/p/1689252.html
Copyright © 2011-2022 走看看