Bitwise
Byte Checksum
A tiny checksum can combine byte values with masking to keep the result in range.
Byte Checksum
byte_checksum.c
#include <stdio.h>
int main(void) {
int extra = ;
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 = ;
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 = ;
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;
}
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.