Skip to content

Instantly share code, notes, and snippets.

@gunavaran
Created October 15, 2020 16:01
Show Gist options
  • Save gunavaran/960285a931c6926a45f0ff41213aa2cc to your computer and use it in GitHub Desktop.
Save gunavaran/960285a931c6926a45f0ff41213aa2cc to your computer and use it in GitHub Desktop.
void full_adder(int a, int b, int c, int *sum, int *carry) {
int test = ((a == 1) << 2 | (b == 1) << 1 | (c == 1));
switch (test) {
case 0:
*carry = 0;
*sum = 0;
break;
case 1:
*carry = 0;
*sum = 1;
break;
case 2:
*carry = 0;
*sum = 1;
break;
case 3:
*carry = 1;
*sum = 0;
break;
case 4:
*carry = 0;
*sum = 1;
break;
case 5:
*carry = 1;
*sum = 0;
break;
case 6:
*carry = 1;
*sum = 0;
break;
case 7:
*carry = 1;
*sum = 1;
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment