#include "stdio.h" unsigned char ErrorBCC(unsigned char D1, unsigned char D2){ // D1==D2 : 0, 2ビット以上異なるとき 0xFF, // 1ビット異なるときビット位置のみ1, 他は0となるデータ if(D1 == D2) return 0; unsigned char R =D1 ^ D2; for(unsigned char DF=R; DF!=0; DF>>=1) if(DF & 1) {if (DF == 1) return R; else return 0xFF;} return R; } void printBit(unsigned char D){ for(unsigned char M=0x80;M!=0; M>>=1) printf("%d ", D&M?1:0); } void printBCC(unsigned char D1,unsigned char D2, unsigned char R){ printf("\n\n BCC Check"); printf("\n %2X ", D1); printBit(D1); printf("\n %2X ", D2); printBit(D2); printf("\n -------------------"); printf("\n %2X ", R); printBit(R); } int main(int argc, char* argv[]) { unsigned char A1=0x9C, A2=0x9C; unsigned char B1=0x9C, B2=0x94; unsigned char C1=0x9C, C2=0x95; printBCC(A1, A2, ErrorBCC(A1,A2)); printBCC(B1, B2, ErrorBCC(B1,B2)); printBCC(C1, C2, ErrorBCC(C1,C2)); printf("\n\n"); getchar(); return 0; }