2013-02-11 5 views
-7

어떻게

는 7 비트 이진 번호를 입력 해주세요 온다 일단 나는이 가지고 올 C#을 원하는 도와주세요 입니다 :

00100111 

이 내가 함께 온 내 코드, 그 아마 잘못이 그래서 그것을이 확실히되어 수정할 수 주 시겠어요?

{ 
    Console.WriteLine("Please enter a 7- bit binary number"); 

    string number = Console.ReadLine(); 

    int count1 = 0; 
    int count2 = 0; 

    for(int i = 0; i < number.Length; i++) 
    { 
     count1++; 
    } 
    else 
    { 
     count2++; 
    } 

    if (count1 < count2) 
     Console.WriteLine("Your number with parity bit is "+ number+ "1"); 
} 
else 
{ 
    Console.WriteLine("Your number with parity bit is "+ number + "0"); 
} 

    } 
} 

}이 그것을해야

+0

미안 내가 코드 – user1726553

+0

{ Console.WriteLine ("7- 비트 바이너리 번호를 입력 해주세요")를 넣어 깜빡; 문자열 번호 = Console.ReadLine(); int count1 = 0; int count2 = 0; for (int i = 0; i user1726553

+1

음이 내게 (함께 5 버튼) 내 질문에 – user1726553

답변

1

도움을 사전에

들으 :

Console.WriteLine("Please enter a 7- bit binary number"); 

string number = Console.ReadLine(); 

int count = 0; 

for(int i = 0; i < number.Length; i++) 
{ 
    if(number[i] == '1') 
    { 
     count++; 
    } 
} 

Console.WriteLine("Your number with parity bit is "+ number + (count % 2).ToString()); 

내가이 현재 수준을 넘어 상상 싶지만,이 또한 작동합니다 :

Console.WriteLine("Please enter a 7- bit binary number"); 

string number = Console.ReadLine(); 

string parityBit = (number.Where(c => c == '1').Count() % 2).ToString(); 

Console.WriteLine("Your number with parity bit is "+ number + parityBit); 
+0

thx 나는 그것을 시도 할 것이다 – user1726553

+0

Thx 너무 많이 내가 진드기를 줬다 – user1726553

+0

이 사용자 입력은 어떨까요 : "123456"? int 로의 변환, 처리 (정수 표현에 대한 작업) 및 문자열 스테이지로의 변환을 피하는 이유는 무엇입니까? –

1

따라서, parity bit은 입력에 짝수 1 비트가 있는지 여부를 나타냅니다. 따라서 입력 문자열이 바이너리 인 경우 (일반적으로 안전하게 가정하지는 않지만 지금은 무시할 것임) 이진 문자열에서 1의 수를 단순히 계산해야합니다.

int numberOfOnes = 0; 
for (int i = 0; i < bitstring.length; i++) 
{ 
    if (bitstring[i] == '1') 
     numberOfOnes++; 
} 

if (numbersOfOnes % 2 == 0) 
    // even number of ones 
else 
    // uneven number of ones 

주에 따라 패리티 비트의 두 가지 버전이 존재한다는 패리티 경우가 1이있는 경우 : (? 내 생각),이처럼 할 수있는 초기 아이디어에 따라

패리티가 짝수 인 경우 0입니다. 당신이 선택한 것은 당신에게 달렸습니다.

+0

THX 많은 도움을 청합니다 – user1726553

+0

다음 사용자 입력을 고려하십시오 : "123456". 로직이 사용자 입력의 유효성을 검사하지 않습니다. –

+0

@ SergeyBrunov 첫 번째 단락에서 그렇게 말했습니다. – poke

0

알고리즘 :

  1. 문자열이 정수로 변환합니다.
  2. 패리티 비트 값을 찾습니다.
  3. 소스 정수에 "패리티 비트 값 추가 ="결과 정수.
  4. 결과 정수를 문자열로 변환하고 출력 할 문자열을 씁니다.

소스 코드 :

Console.Write("Please enter a 7-bit binary number: "); 
string numberString = Console.ReadLine(); 

// Convert to integer representation. 
int number = Convert.ToInt32(numberString, 2); 

// Find parity bit value for the integer. 
bool parity = false; 
int tempNumber = number; 
while (tempNumber > 0) 
{ 
    parity ^= tempNumber % 2 != 0; 
    tempNumber >>= 1; 
} 

// "Append" parity bit. 
int numberWithParity = number << 1 | (parity ? 1 : 0); 

// Convert the result to string representation. 
numberString = Convert.ToString(numberWithParity, 2).PadLeft(8, '0'); 
Console.WriteLine("Your number with parity bit is {0}", numberString);