美文网首页
01.02 笔记-二进制及位运算

01.02 笔记-二进制及位运算

作者: xxxQinli | 来源:发表于2019-01-02 17:25 被阅读0次

    计算机存数据只能存数字数据,而且是二进制的补码

    计算机对数据进行运算的时候使用补码进行运算的,将数据从计算机中读出来,显示的是原码

    什么是补码


    1. 原码

    • 符号位+真值
    • 说明
      • 符号位:最高位用0表示正数,用1表示负数

      • 真值:去掉正负符号后,数字对应的二进制

        • X(符号位) XXXXXXX XXXXXXXX(值,2的十五次方减一)
        • 求二进制的值加符号位就是原码
          100的原码:0 1100100
          -100的原码:1 1100100

    2. 反码

    • 负数的反码:原码的符号位不变,其余的位数取反,0变1,1变0
    • 正数的反码就是它本身,原码
      • 100的反码:0 1100100
      • -100的反码:1 0011011
    • 反码的存在就是为了算补码

    3. 补码

    • 正数的补码:原码
    • 负数的补码:反码加1
      • 100的补码:0 1100100
      • -100的补码:1 0011100

    练习: -50的原码、反码、补码

    原码:1110010

    反码:1001101

    补码:1001110

    为什么要存补码,因为计算机里只有加法器,没有减法器


    位运算:

    &(按位与) |(按位或)~(按位取反)^(按位异或)>>(右移) <<(左移)

    参与运算的都是补码,位运算的执行效率要高很多

    1. 与运算 &
      数字1 & 数字2 - 有0就是0
      参与运算的都是补码:0111 & 1101 --> 每一位上分别与 若都为1,则为1,有一个是0,就是0,0101
      特点:一个位上的数如果和1与,可以保留这个数,和0与,可以置0
    • 应用:判断一个数的奇偶性,二进制最后一位是否是1,是1位奇数,是0为偶数,比一般的效率高
      num % 2 == 0 ---> 偶数 普通方法
      num & 1 == 1 ---> 奇数 效率高的方法
      num & 1 == 0 ---> 偶数 效率高的方法
    1. 或运算 |
      只要有1,就是1
      1 | 1 = 1
      1 | 0 = 1
      0 | 1 = 1
      0 | 0 = 0
    • 特点:和1或就是1,与0或与0
    1. 取反 ~
      ~ 数字
      ~ 1 ----> 0
      ~ 0 ----> 1
      补码取反,要反着求回原码
      去反两次等于本身,连续两个波浪号

    2. 异或^
      相同为0,不同为1
      1 ^ 1 = 0
      1 ^ 0 = 1
      0 ^ 1 = 1
      0 ^ 0 = 0

    • 应用:设密码,将密码与另一个值异或,得到另外的值
      异或两次得到原来的值
    1. 左移<< 右移>>
      数字1 << N, 数字1左移N位
      数字1 >> N, 数字1右移N位
    • 规律:左移是*,数字1 * (2 ** N),右移动是/ 数字1 // (2 ** N)
    • 应用:快速乘2的次方,快速除2的次方,比乘除效率高
      4 << 1 = 8
      -3 << 2 = -12
      5 >> 2 = 1

    相关文章

      网友评论

          本文标题:01.02 笔记-二进制及位运算

          本文链接:https://www.haomeiwen.com/subject/ecxtrqtx.html