#include <stdio.h>
unsigned char calculate_parity(unsigned char byte) {
unsigned char parity = 0;
for (int i = 0; i < 8; i++) {
parity ^= (byte >> i) & 1; // Her bit için XOR işlemi
}
return parity;
}
// Dalga şeklini yatay yazdıran fonksiyon
void print_waveform_horizontal(unsigned char bit) {
if (bit == 0) {
printf("__ "); // Lojik-0 dalga şekli
} else {
printf("|‾‾| "); // Lojik-1 dalga şekli
}
}
int main() {
char char1, char2;
// Kullanıcıdan iki karakter alın
printf("İlk karakteri girin: ");
scanf(" %c", &char1);
printf("İkinci karakteri girin: ");
scanf(" %c", &char2);
// ASCII kodlarını al
unsigned char ascii1 = (unsigned char)char1;
unsigned char ascii2 = (unsigned char)char2;
// Tek parite hesapla ve bit dizilerini oluştur
unsigned char parity1 = calculate_parity(ascii1);
unsigned char parity2 = calculate_parity(ascii2);
// Her karakter için 9 bitlik veri oluştur (ASCII + parite)
unsigned char bit_sequence1[9], bit_sequence2[9];
for (int i = 0; i < 8; i++) {
bit_sequence1[7 - i] = (ascii1 >> i) & 1; // ASCII kodunu bitlere böl
bit_sequence2[7 - i] = (ascii2 >> i) & 1;
}
bit_sequence1[8] = parity1; // Parite bitini ekle
bit_sequence2[8] = parity2;
// İlk karakterin dalga şeklini yazdır
printf("\nİlk karakter '%c' için bit dizisi: ", char1);
for (int i = 0; i < 9; i++) {
printf("%d", bit_sequence1[i]);
}
printf("\n");
for (int i = 0; i < 9; i++) {
print_waveform_horizontal(bit_sequence1[i]);
}
// İkinci karakterin dalga şeklini yazdır
printf("\n\nİkinci karakter '%c' için bit dizisi: ", char2);
for (int i = 0; i < 9; i++) {
printf("%d", bit_sequence2[i]);
}
printf("\n");
for (int i = 0; i < 9; i++) {
print_waveform_horizontal(bit_sequence2[i]);
}
return 0;
}