이진 연산자 핵 및 트릭

이진 연산자는 이진 데이터를 조작하는 방법입니다. 우리는 이미 & , | , ^ , <<>> 연산자가 있다는 것을 알고 있지만 우리 모두가 각 연산자의 비밀을 아는 것은 아닙니다. go 언어를 사용하는 연산자 뒤에 있는 속임수를 살펴보겠습니다.

2로 곱하거나 나누기


* 2를 사용하여 2를 곱하거나 / 2를 사용하여 나누는 것이 일반적인 방법이지만 이항 연산자로 어떻게 동일한 결과를 얻을 수 있습니까?





2로 나누다
1만큼 오른쪽으로 이동someNumber >> 1
2를 곱하다
왼쪽으로 1 쉬프트someNumber << 1


    // multiply by 2
    fmt.Println(4 << 1)
    // Output: 8

    // divide by 2
    fmt.Println(4 >> 1)
    // Output: 2

대소문자 변경




    // to upper case char
    fmt.Println((string)('c' & '_'))
    // Output: C

    // to lower case char
    fmt.Println(string('A' | ' '))
    // Output: a

대소문자 반전



문자 반전은 공백이 있는 xor로 달성할 수 있습니다.

    fmt.Println(string('A' ^ ' '), string('b' ^ ' '))
    // Output: a B

문자 위치 가져오기


and with 31를 사용하여 알파벳(1-26)에서 문자의 위치를 ​​가져옵니다.

    fmt.Println('z' & 31)
    // Output: 26

홀수 또는 짝수 확인


and with 1를 사용하여 숫자가 홀수/짝수인지 간단히 확인하고, 숫자가 홀수이면 true를 반환합니다.

    // odd number return true
    fmt.Println(7 & 1 > 0)
    // Output: true

    // even number return false
    fmt.Println(8 & 1 > 0)
    // Output: false


https://play.golang.org/p/-wsIlDgBTmF에서 직접 시도하십시오.

좋은 웹페이지 즐겨찾기