This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include<stdio.h> | |
int subtract(int x, int y) | |
{ | |
// Iterate till there is no carry | |
while (y != 0) | |
{ | |
// borrow contains common set bits of y and unset | |
// bits of x | |
int borrow = (~x) & y; | |
// Subtraction of bits of x and y where at least | |
// one of the bits is not set | |
x = x ^ y; | |
// Borrow is shifted by one so that subtracting it from | |
// x gives the required sum | |
y = borrow << 1; | |
} | |
return x; | |
} | |
// Driver program | |
int main() | |
{ | |
int x = 29, y = 13; | |
printf("x - y is %d", subtract(x, y)); | |
return 0; | |
} |
No comments:
Post a Comment