#include <stdio.h>
#include <stdint.h>
void add_with_carry(uint8_t a, uint8_t b, uint8_t* result, uint8_t* carry) {
// Your logic here
// int i = 0;
// *result &= 0U;
// while(i<8) {
// if ( ( ( 1U << i ) & a ) == 1U && ( ( 1U << i ) & b ) == 1U ) {
// // 1 + 1 = 10 => result: 10 + 1 (carry) = 1 | carry: 1
// // => result: 10 + 0 (carry) = 0 | carry: 1
// *result = *result | ( *carry << i );
// *carry = 1;
// } else if (( ( 1U << i ) & a ) == 1U || ( ( 1U << i ) & b ) == 1U) {
// // 1 + 0 = 1 => result = 1 + 1 (carry) = 0 | carry: 1
// // => result = 1 + 0 (carry) = 1 | carry: 0
// *result = *result | ( (~( *carry )) << i );
// *carry = ~(*carry);
// } else {
// // 0 + 0 = 0 => result = 0 + 1 (carry) = 1 | carry: 0
// // => result = 0 + 0 (carry) = 0 | carry: 0
// *result = *result | ( *carry << i );
// *carry = 0;
// }
// ++i;
// }
*result = a + b;
if (b > (0xFF - a)) *carry = 1;
else *carry = 0;
}
int main() {
uint8_t a, b, result, carry;
scanf("%hhu %hhu", &a, &b);
add_with_carry(a, b, &result, &carry);
printf("%u ", result);
printf("%u", carry);
return 0;
}
Input
100 50
Expected Output
150 0