zoukankan      html  css  js  c++  java
  • 位运算之加减乘除

    1.加法:

    如:4+5

        0000 0100       0000 0100

        0000 0101         0000 0101

    按位加--------------------   (1)异或---------------------     不考虑进位的情况下,异或的结果与按位加一样

        0000 1001            0000 0001

    判断是否有进位,(两个都为1就有进位)。需要用到与运算(两个都为1才为1)

          0000 0100

          0000 0101

    (2)与运算--------------------

          0000 0100     结果不为0,说明(左3)有进位

    即:

    • 计算机先进行异或(不一样为1)的操作---(0000 0001)
    • 再进行运算(都为1时为1),如果与运算结果(0000 0100)不为0说明二进制同一位的都是1,需要进位(与运算结果左移一位)---(0000 1000);
    • 将异或结果和与结果继续异或运算---(0000 1001)
      • 0000 0001
      • 0000 1000
      • --------------
      • 0000 1001
    • 再判断刚才执行异或运算的结果进行与运算判断是否有进位:
      • 0000 0001
      • 0000 1000
      • --------------
      • 0000 0000

    过程如下:

    2.减法

    减法对计算机来说就是假发

    (1)异或:

      0000 0100

      1111 1011

      -----------------

      1111 1111

    (2)判断是否有进位(与的方式)

      0000 0100

      1111 1011

      -----------------

      0000 0000

    没有进位说明结果就是1111 1111 即16进制FF(负数以补码形式存在),有符号的十进制就是-1

    3.乘法:本质就是多个值相加,也就是加法

    4.除法:本质是一个值能减几个数

  • 相关阅读:
    LeetCode(287)Find the Duplicate Number
    LeetCode(290) Word Pattern
    LeetCode(205)Isomorphic Strings
    LeetCode(201) Bitwise AND of Numbers Range
    LeetCode(200) Number of Islands
    LeetCode(220) Contains Duplicate III
    LeetCode(219) Contains Duplicate II
    命令行执行Qt程序
    LeetCode(228) Summary Ranges
    redis 的安装和使用记录
  • 原文地址:https://www.cnblogs.com/codexlx/p/13229979.html
Copyright © 2011-2022 走看看