A tiny checksum can combine byte values with masking to keep the result in range.

byte mask `& 255` keeps only the lowest eight bits of a running total.
bounded sum Masking after each addition prevents the checksum from growing without bound.

Byte Checksum

extra
byte_checksum.c
Replay: real traced execution (multi-file project)
#include <stdio.h>

int main(void) {
    int extra = 4;
    unsigned int bytes[3] = {10, 20, (unsigned int)extra};
    unsigned int checksum = 0;

    for (int i = 0; i < 3; i++) {
        checksum = (checksum + bytes[i]) & 255;
    }

    printf("checksum=%u\n", checksum);
    return 0;
}
#include <stdio.h>

int main(void) {
    int extra = 40;
    unsigned int bytes[3] = {10, 20, (unsigned int)extra};
    unsigned int checksum = 0;

    for (int i = 0; i < 3; i++) {
        checksum = (checksum + bytes[i]) & 255;
    }

    printf("checksum=%u\n", checksum);
    return 0;
}
#include <stdio.h>

int main(void) {
    int extra = 200;
    unsigned int bytes[3] = {10, 20, (unsigned int)extra};
    unsigned int checksum = 0;

    for (int i = 0; i < 3; i++) {
        checksum = (checksum + bytes[i]) & 255;
    }

    printf("checksum=%u\n", checksum);
    return 0;
}
  1. extra ← 4, bytes ← ⟨addr A⟩, checksum ← 0

    3int main(void) {4    int extra→ 4 = 4; //@extra=40, 2005    unsigned int bytes→ ⟨addr A⟩[3] = {10, 20, (unsigned int)extra4};6    unsigned int checksum→ 0 = 0;
  2. checksum ← 10

    pass 1 of 3
    8for (int i0 = 0; i < 3; i++) {9    checksum→ 10 = (checksum + bytes[i]10) & 255;10}
    All 3 passes — pass 1 is the card above
    passibytes[i]checksum
    10100 10
    212010 30
    32430 34
  3. printf("checksum=%u ", checksum);

    12    printf("checksum=%u\n", checksum34);13    return 0;14}
    outputchecksum=34
  1. extra ← 40, bytes ← ⟨addr A⟩, checksum ← 0

    3int main(void) {4    int extra→ 40 = 40;5    unsigned int bytes→ ⟨addr A⟩[3] = {10, 20, (unsigned int)extra40};6    unsigned int checksum→ 0 = 0;
  2. checksum ← 10

    pass 1 of 3
    8for (int i0 = 0; i < 3; i++) {9    checksum→ 10 = (checksum + bytes[i]10) & 255;10}
    All 3 passes — pass 1 is the card above
    passibytes[i]checksum
    10100 10
    212010 30
    324030 70
  3. printf("checksum=%u ", checksum);

    12    printf("checksum=%u\n", checksum70);13    return 0;14}
    outputchecksum=70
  1. extra ← 200, bytes ← ⟨addr A⟩, checksum ← 0

    3int main(void) {4    int extra→ 200 = 200;5    unsigned int bytes→ ⟨addr A⟩[3] = {10, 20, (unsigned int)extra200};6    unsigned int checksum→ 0 = 0;
  2. checksum ← 10

    pass 1 of 3
    8for (int i0 = 0; i < 3; i++) {9    checksum→ 10 = (checksum + bytes[i]10) & 255;10}
    All 3 passes — pass 1 is the card above
    passibytes[i]checksum
    10100 10
    212010 30
    3220030 230
  3. printf("checksum=%u ", checksum);

    12    printf("checksum=%u\n", checksum230);13    return 0;14}
    outputchecksum=230