zoukankan      html  css  js  c++  java
  • 用位运算实现加减法

    今天学习了一下用位运算实现加减法   由于负数的存储方式是补码的方式   所以实现了加法就是实现了减法

    加法运算基于这样的一个定理:

    a + b = a^b + ( ( a & b ) << 1)

    直到进位或者是和为零的时候就返回就好了

    代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 using namespace std;
     5 
     6 int get(int a, int b) {
     7     int c = a ^ b;
     8     int d = ( a & b ) << 1;
     9     if(c == 0 || d == 0) {
    10         return c ^ d;
    11     }
    12     return get(c, d);
    13 }
    14 
    15 int main() {
    16     int a, b;
    17     while(EOF != scanf("%d %d",&a, &b) ) {
    18         printf("%d
    ", get(a, b) );
    19     }
    20     return 0;
    21 }
  • 相关阅读:
    力扣背包型动态规划
    并查集
    位运算题目
    随机采样题目
    单调栈题目
    前缀和题目
    贪心题目
    堆排序
    python装饰器
    状态机题目
  • 原文地址:https://www.cnblogs.com/zhanzhao/p/4156218.html
Copyright © 2011-2022 走看看