2016-10-19 3 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을 내 보냅니다.

일반적으로 패리티 비트 앞에 추가되는 패리티 비트를 추가합니다. 이것이 필요한 경우 먼저 패리티 비트를 판별하고 인쇄하여 현재 for 루프를 실행하십시오.

+0

나는 당신이 말하는 것을 이해하고 그것이 내가 필요한 바로 그 것처럼 들린다. 하지만 1이나 0을 방출하는 방법에 대해 혼란 스럽습니다. – Jasmine

+0

'putchar'을 사용 하시겠습니까? 어쩌면 당신의 혼란을 이해하지 못할 수도 있습니다. –

+0

아, 죄송합니다. 방금 "방출"하지 않고 "생략"이라고 읽었습니다. 하지만 이제 당신의 설명을 이해합니다. 당신의 도움에 감사드립니다! – Jasmine