How to subtract two numbers with binary operators in C

2 Answers

0 votes
#include <stdio.h>
  
int binarySub(int a, int b) 
{
    b = -b;
    
    int carry;
    while (b != 0) {
           carry = (a & b) << 1;
           a = a ^ b;
           b = carry;
    }
    return a;
}
  
int main() 
{
    int a = 12, b = 7;
   
    printf("%d\n", binarySub(a, b));
  
    return 0;
}
   
/*
  
run:
  
5
  
*/

 



answered Jul 21, 2018 by avibootz
0 votes
#include <stdio.h>
 
int binaryAdd(int a, int b) 
{
      int carry; 
      while (b != 0) {
             carry = (a & b) << 1;
             a = a ^ b;
             b = carry;
      }
      return a; 
}

int binarySub(int a, int b) 
{
    return binaryAdd(a, binaryAdd(~b, 1));
}
 
int main() 
{
    int a = 12, b = 7;
  
    printf("%d\n", binarySub(a, b));
 
    return 0;
}
  
/*
 
run:
 
5
 
*/

 



answered Jul 21, 2018 by avibootz

Related questions

3 answers 348 views
1 answer 189 views
2 answers 273 views
1 answer 224 views
2 answers 183 views
183 views asked Jul 6, 2020 by avibootz
1 answer 207 views
...