Carry Flag in 8-bit Addition

Code

#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 carr =0;
    int tempcarr = a;
    while (b != 0) 
    {
    carr = ((a & b) << 1);  // carry bits
    a = a ^ b;                  // sum without carry
    b = carr;
    }
    *result = a;
    //printf("%d\n",a);
    if(*result < tempcarr )
    {
        *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;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

100 50

Expected Output

150 0