• 位移的计算


    一、位运算一般用于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

  • 相关阅读:
    FileManager(文件管理类)
    XE6 IntraWeb.v14.0.32安装及破解指南
    在应收应付系统凭证做冲销后,如何取消冲销?
    delphi将图片保存到SQL数据库和读取图片
    去掉cxgrid 中的过滤下拉箭头
    CxGrid 分组以后自动排序了,可以禁止自动排序吗
    最简单解决CHM文件无法显示的办法
    用友T3、T6常见问题
    SQL2005还原数据库3154错误
    cxGrid 怎样才能让不自动换行 WordWrap:=false
  • 原文地址:https://www.cnblogs.com/bbthome/p/3549605.html
Copyright © 2020-2023  润新知