2016-10-19 9 views
0

Итак, я понимаю бит четности, но с точки зрения моего кода я не знаю, как его реализовать. В моем классе это код, с которым мы работаем, и я не могу понять, как добавить бит четности в начало двоичного числа, когда он не хранится нигде, каждый бит просто печатается, поскольку он идет. Я надеюсь, что в этом есть смысл.Добавление бит четности в C

Вот часть моего кода:

#include <stdio.h> 
#define BITS 2 

int main(void) 
{ 
    int choice; 
    char ch; 
    int asciiChar; 
    char end; 
    int in; 

    printf("What type of display do you want?\n"); 
    printf("Enter 1 for character parity, 2 for integer checksum: "); 
    scanf("%d", &choice); 
    if(choice == 1) 
    { 
     printf("Enter a character for parity calculation: "); 
     scanf(" %c", &ch); 

     int x = ch, i; 
     int mask = 1 << sizeof(int) * BITS - 1; 

     printf("x = %d\n", x); 

     printf("Character: %c, ", ch); 
     printf("Bit representation: "); 
     for(i = 1; i <= sizeof(int) * BITS; i++) 
     { 
      if(x & mask) 
       putchar('1'); 
      else 
       putchar('0'); 
      x <<= 1; 
      if(!(i % 8)) 
      { 
       putchar(' '); 
      } 
     } 
     printf("\n"); 
    } 
} 

Я не ищу реальные ответы, я просто надеюсь, кто-то может дать мне некоторые указания, спасибо!

ответ

1

Предполагая, что бит контроля четности должен иметь байт, должно быть четное число из 1 бита: сохранить счетчик количества напечатанных 1 битов, а когда общее значение BITS-1, проверьте, является ли счет нечетным. Если да, испустите «1», иначе испустите нуль.

Это добавляет бит четности, где обычно бит четности добавляется. Если это необходимо, сначала добавьте цикл, чтобы определить бит четности, распечатать его и выполнить текущий цикл.

+0

Я понимаю, что вы говорите, и похоже, что это именно то, что мне нужно. Но я смущен тем, как я начну излучать 1 или ноль. – Jasmine

+0

Использовать 'putchar'? Может быть, я не понимаю твое замешательство. –

+0

О, извините, я просто понял, что прочитал это как «опустить», а не «испускать». Но теперь я понимаю ваше объяснение, поэтому спасибо за вашу помощь! – Jasmine

 Смежные вопросы

  • Нет связанных вопросов^_^