#include <stdio.h>

int main(void){
	char ch1, ch2;
	int bitPattern1[8], bitPattern2[8];
	unsigned char mask = 0x1;
	int i, total;

	printf("Please enter the first character: ");
	scanf("%c", &ch1);
	printf("Please enter the second character: ");
	scanf("\n%c", &ch2);

	for(i=0; i<8; i++){
		if((ch1 & mask) == 0){
			bitPattern1[i] = 0;
		}
		else{
			bitPattern1[i] = 1;
		}

		if((ch2 & mask) == 0){
			bitPattern2[i] = 0;
		}
		else{
			bitPattern2[i] = 1;
		}
		mask=mask<<1;
	}

	//Part 1
	total = 0;
	for(i=0; i<8; i++){
		if(bitPattern1[i] == 1)
			total++;
		if(bitPattern2[i] == 1)
			total++;
	}

	printf("\nThe total number of ones in both bit patterns is %d", total);
	printf("\nThe total number of zeros in both bit patterns is %d", (16-total));

	printf("\n");

	//Part 2
	total = 0;
	for(i=0; i<8; i++){
		if(bitPattern1[i] != bitPattern2[i])
			total++;
	}

	printf("\nThe number of different bits, or Hamming distance of the bytes, is %d", total);

	printf("\n");

	//Part 3
	printf("\nFirst bit pattern: \n\tForward: ");
	for(i=7; i>=0; i--)
		printf("%d", bitPattern1[i]);

	printf("\n\tBackward: ");
	for(i=0; i<8; i++)
		printf("%d", bitPattern1[i]);

	printf("\nSecond bit pattern \n\tForward: ");
	for(i=7; i>=0; i--)
		printf("%d", bitPattern2[i]);

	printf("\n\tBackward: ");
	for(i=0; i<8; i++)
		printf("%d", bitPattern2[i]);

	printf("\n");

	//Part 4
	printf("\nThe unsigned integer value of the first bit pattern is %u", ch1);
	printf("\nThe unsigned integer value of the second bit pattern is %u", ch2);

	printf("\n");

	//Part 5
	printf("\nThe hexidecimal value of the first bit pattern is %X", ch1);
	printf("\nThe hexidecimal value of the second bit pattern is %X", ch2);

	printf("\n\n");
}