찾다

 >  Q&A  >  본문

python - 按位“与”、“或”、“异或”运算的使用场景有什么?

按位“与”、“或”、“异或”运算的使用场景有什么?

阿神阿神2804일 전943

모든 응답(5)나는 대답할 것이다

  • 阿神

    阿神2017-04-17 18:02:22

    XOR 연산은 암호화의 핵심 연산 중 하나입니다.

    많은 대칭 암호화는 XOR 연산을 기반으로 합니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-17 18:02:22

    모두 이진 연산자이며 어셈블리 개념이므로 일반적으로 사용되지 않습니다.
    하지만 상대적으로 낮은 레벨의 오퍼레이터이기 때문에 작업 속도가 매우 빠르고, 일반 오퍼레이션에서도 사용할 수 있습니다.
    예:
    및 연산자는 일반적으로 지우는 데 사용됩니다.
    AND 연산자를 사용하여 정수를 짧은 정수로 변환할 수 있습니다(실제로는 dword를 단어로 변환).

    으아악

    Or 연산은 일반적으로 보완 코드에 사용됩니다.
    예를 들어 정수형은 4바이트, 32비트이므로 32비트를 수용할 수 있도록 구성할 수 있다는 의미입니다. (TRUE/FALSE) 이때 를 사용하여 특정 위치를 1로 설정할 수 있습니다.

    암호화에는 일반적으로 배타적 OR을 사용합니다.
    그 밖에도 곱셈은 왼쪽 쉬프트, 나눗셈은 오른쪽 쉬프트 등 특이한 기능도 있습니다.

    이 분야에는 지식 포인트가 너무 많아 일반적으로 특별히 공부할 필요가 없습니다. 바이너리에 대해 더 많이 알면 이해할 수 있을 것입니다. 솔직히 말해서 꽤 어렵습니다.
    오랜 시간 동안 썼는데 아마 이해하는 사람이 많지 않았을 것 같아요. .

    회신하다
    0
  • PHPz

    PHPz2017-04-17 18:02:22

    비트 연산은 임베디드 및 드라이버 프로그래밍에서 더 많이 사용됩니다. 레지스터를 직접 연산할 때는 많이 사용되지 않는 것 같습니다.
    하지만 사용할 수 있는 이상한 기술이 많이 있다는 인상을 받았습니다. 가장 인상 깊었던 것은 leetcode에 대한 질문입니다:
    LeetCode 136. Single Number

    질문은 매우 간단합니다. 배열에 한 번 나타나는 유일한 정수를 찾고 나머지는 두 번 나타나는 것입니다.

    일반적인 아이디어는 테이블을 사용하는 것이지만 배열이 큰 경우 속도가 매우 느리고 비트 XOR 알고리즘이 있습니다.
    배열의 모든 숫자를 비트 단위로 직접 XOR하면 나머지 숫자가 원하는 이유를 알 수 있습니다.

    회신하다
    0
  • 黄舟

    黄舟2017-04-17 18:02:22

    실제 시나리오의 예
    바이트의 특정 비트 값을 구성합니다.
    예:
    이 변수의 특정 비트를 설정하려면 비트별 OR a = a|0x01을 사용하여 마지막 비트를 추출하면 비트별 AND b = a&0x01을 사용할 수 있습니다. 마지막 비트를 추출하는 값입니다.

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 18:02:22

    • 비트마스크, 비트맵 등

    • 바이너리 형식 처리(예: TCP 헤더)

    • 암호화

    회신하다
    0
  • 취소회신하다