2017-12-01 1 views
0

이 질문에 대답 할 때 몇 가지 문제가 발생했습니다 : 숫자 n과 위치 p가 주어졌습니다. 숫자 (0 또는 1)의 위치 p에 비트 값을 인쇄하는 일련의 연산을 작성하십시오. 다른 예 : n = 35, p = 6 -> 0.숫자의 위치에 비트 값 인쇄

숫자의 위치 p에 비트 값을 인쇄 할 때의 의미는 무엇입니까? ?

비트가 35 (100011)입니다. 비트 위치를 오른쪽에서 왼쪽으로 읽으면 p = 5 -> 1의 비트 값이 왜 되는가?

+1

이렇게 질문해야합니다. 누가 당신에게 우리가 아니라이 일을 주 었는지. 사람들은 마음을 읽을 수 없습니다. 내 best * guess *는 베팅이 0부터 시작한다는 것입니다 (카운트하는 일반적인 방법). 다시 그 사람이 너에게 그 임무를 준 것을 의미하는 것이 무엇인지 내가 어떻게 알았지? – Sefe

+0

신속한 답장을 보내 주셔서 감사합니다! 평가 책에서 발견 한 그 질문! 나는 '숫자의 p 위치에있는 비트 값'이 의미하는 것을 얻지 못한다. – Zhipeng

답변

0

여기에있는 목적은 주어진 숫자 내에서 위치 x의 비트 값을 확인하는 것입니다.

보안 옵션을 저장하는 데 사용할 수 있습니다. 예 - 비트 0은 읽기 전용이고 비트 1은 쓰기, 비트 2는 새 항목 만들기 등입니다.

부울 연산에 대해 읽고 2 진법으로 숫자를 나타내는 방법을 이해해야합니다. 그런 다음 "AND"연산 (NOT, OR, XOR, XON)을 읽으십시오. 당신이 연주하는

Here is a good link

나는 몇 가지 간단한 코드가 있습니다. 나는 당신이 이해할 수 있도록 오랫동안 "확인"절차를 만들었습니다. 원하는 경우 한 줄로 할 수 있습니다.

private void button1_Click(object sender, EventArgs e) 
    { 
    int n ; 

    int i ; 

    string s; 

    string b; 

    n = 13;//1101 in binary representation 

    i = 0; 

    s = checkBitX(n,i); 

    b = Convert.ToString(n, 2); 

    MessageBox.Show("Bit " + i.ToString() + " , in decimal number " + n.ToString() + ", binary = " + b + " ,the bit is : " + s); 


    i = 1; 

    s = checkBitX(n, i); 

    MessageBox.Show("Bit " + i.ToString() + " , in decimal number " + n.ToString() + ", binary = " + b + " ,the bit is : " + s); 


    } 
    private string checkBitX(int n, int i) 
    { 

    string s = ""; 

    int temp = (int)Math.Pow(2, i); 

    int test = n & temp; 

    if (test != 0) 
    { 
     s = "set"; 
    } 
    else 
    { 
     s = "cleared"; 
    } 

    return s; 
    } 
0

35 비트 (100,011)의. 비트 위치를 오른쪽에서 왼쪽으로 읽으면 p = 5 -> 1의 비트 값이 왜 되는가? 가장 오른쪽 비트가 p=0 될 것이다, 그래서

는 아마도 그들은 제로에 대해 얘기하고, 그리고 p=5여섯 번째 비트에 대해 얘기하고있다. 수학의 관점에서

:

bool bitSet = ((n >> p) & 1) != 0; 

그것을 테스트하는 가장 쉬운 방법은 아마; 따라서 p이 5이면이 오른쪽 시프트를 5 씩 (가장 오른쪽 5 비트 삭제) 테스트 한 다음 이 이제 가장 오른쪽 비트가 1인지 또는 0인지 테스트합니다.