zoukankan      html  css  js  c++  java
  • 位移的计算

    一、位运算一般用于2的次幂算法中,比乘除速度快
     1、左移
     比如:3<<1  将3的二进制数向左移1位,后面空缺补0------直接可运算为:3*2的1次幂 = 6
        4<<2  就是4*2的2次幂=16
     2、右移
     比如:6>>1  将6的二进制数向右移1位,那么前面空缺的就补0或1,这取决于开始时最前面的那个数保持一致就可以,因为二进制中最前位0表示正数,1表示负数
        6>>1  直接可运算为:6/2的1次幂 = 3
     3、无符号右移
     比如:6>>>1  将6的二进制数向右移1位,那么前面空缺的就补0
     
     示例如下:
     
     24<<3  :24的二进制是00000000 00000000 00000000 00011000,向左移3位且末尾需要0补齐空缺,00000 00000000 00000000 00011000000,十进制为192
              可简化为 24*2的3次幂=192
     6>>1   : 6的二进制是 00000000 00000000 00000000 00000110,向右移1位且保持最高位数不变, 000000000 00000000 00000000 0000011,十进制为3
              可简化为 6/2的1次幂 = 3
     24>>>3 : 24的二进制是00000000 00000000 00000000 00011000,向右移3位且最高位需要0补齐空缺, 00000000000 00000000 00000000 00011 ,十进制为3
       

    二、负数的二进制表示
        以正数的补码形式表示
       补码:原码转反码再加1
       比如:6的二进制是00000000 00000000 00000000 00000110
              反码就是  11111111 11111111 11111111 11111001
              补码就是  11111111 11111111 11111111 11111010  表示-6
      
       示例如下:
      
       -6>>>1 :6的二进制是 00000000 00000000 00000000 00000110
        反码就是   11111111 11111111 11111111 11111001
        补码就是   11111111 11111111 11111111 11111010  表示-6 向右移1位且最高位补0 ,就是011111111 11111111 11111111 1111101,十进制就是2147483645

  • 相关阅读:
    二叉树中序遍历
    前序遍历
    配置免秘钥登录
    pip安装
    zookeeper C client API 和zkpython 的安装
    安装 Java
    json递归查询
    php 编译安装
    docker 中 安装配置 mysqlcluster(arm)
    glibc编译安装
  • 原文地址:https://www.cnblogs.com/bbthome/p/3549605.html
Copyright © 2011-2022 走看看