2013-05-20 2 views
0

정수가 있고 0에서 1 또는 1에서 0으로 1 비트를 전환하고 싶습니다. 상태를 알 수 없습니다. 1 개의 성명서에서 어떻게합니까? 피 & | ~ ^ 정수에서 비트를 전환하는 방법은 무엇입니까?

  • 사용

    • if else

    (추가 가산기)

  • +2

    이 읽기 숙제를 좋아해. – travis

    +0

    @travis 그다지 가치가 없다. (비록 "너무 지역화 된"이네 제한을 고려해 적용됩니다.) – millimoose

    답변

    4

    이 일반적인 동작이며, 사용 가능한 충분한 명령이있다. 예 : here.

    조금

    bit_fld |= (1 << n) 
    

    지우기 조금

    bit_fld &= ~(1 << n) 
    

    토글 비트를 설정

    bit_fld ^= (1 << n) 
    

    테스트 조금

    bit_fld & (1 << n) 
    
    +0

    그래. 나는 아직 비트 XOR 연산자를 사용한 적이 없다. 감사! – n4pgamer

    3

    특정 비트를 토글하려면 XOR (^) 조작을 사용하십시오. XOR 진리표를보고 답을 찾으십시오.

    +0

    이것이 나의 숙제일지도 모른다고 느꼈으면서 나의 대답에있는 C 매크로 샘플을 삭제했습니다. – yasouser

    1

    비트 설정 비트 OR 연산자 (|)를 사용하여 비트를 설정하십시오.

    number |= 1 << x; 
    

    그러면 비트 x가 설정됩니다.

    비트를 지우려면 비트 AND 연산자 (&)를 사용하여 비트를 지우십시오.

    number &= ~(1 << x); 
    

    그러면 비트 x가 지워집니다. 비트 NOT 연산자 (~)로 비트 문자열을 반전 한 다음 AND로 반올림해야합니다.

    비트를 토글

    The XOR operator (^) can be used to toggle a bit. 
    

    수^= 1 < < X;

    0

    조금 뒤집으려면 입력 한 숫자를 다른 숫자와 XOR 할 수 있습니다. Java based example :

    int a = 0b1001; 
    System.out.println(Integer.toBinaryString(a)); 
    a = a^0b0100; // flip third LSB 
    System.out.println(Integer.toBinaryString(a)); 
    a = a^0b0100; // flip it back 
    System.out.println(Integer.toBinaryString(a)); 
    

    XOR은 당신이 언급 허용 된 사업자 중 하나가 아닌,하지만 can be defined in terms of them(example) :

    int xor(int p, int q) { 
        return (p & ~q) | (~p & q); 
    } 
    

    이 (필요에 따라이 식을 인라인.)

    관련 문제