ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift - 비트연산자
    developing study 2024. 1. 24. 22:02

    지도 문제를 푼 후 다른 사람의 풀이를 보다가 알게 된 것.

    /// arr1 :[Int], arr2[Int]
    /// 0부터 n까지 map으로 도는 클로저 안의 코드
    String(arr1[$0] | arr2[$0], radix: 2)

    문제를 간략히 말하면

    2개의 10진수로 된 숫자를 2진수로 변환했을 때 각 이진수를 비교하는 상황이다.

    둘다 0인 경우와 하나라도 1인 경우를 구분해줘야 했다. 이때 비트 연산자를 사용해 쉽게 풀 수 있는 문제였다.

    비트연산자란

    한 개 혹은 두 개의 이진수에 대해 비트(bit)단위로 논리 연산을 할 때 사용하는 연산자

    비트 단위로 전체 비트를 왼쪽이나 오른쪽으로 이동시킬 때도 사용.

     

    종류

    비트 연산자에는 &, |, ^, ~, <<, >> 이렇게 있는데 이번에 새로 알게된 연산자도 있었다..

    1) AND (&)

    대응되는 두 비트가 모두 1일 때만 1을 반환. 다른 경우는 모두 0.

     

    2)OR(|)

    대응되는 두 비트 중 하나라도 1이면 1 반환. 아니면(=두 비트가 모두 0일 때만) 0 반환.

     

    3)XOR(^)

    대응되는 두 비트가 서로 다르면 1을 반환. 서로 같으면 0 반환.

     

    4)NOT(~)

    해당 비트가 1이면 0 반환, 0이면 1 반환.

    - 각 자릿수 값을 반대로 바꾸는 연산이라고 생각하면 쉬움.

     

    여기까지는 이렇게 활용하면 되겠다!하고 이해가 됐다. 근데,,

     

    5) 시프트 연산자 (<<, >>)....이건 나중에 다시 코드로 연습해봐야겠다.

    정수를 2배로 곱하거나 나누는 효과
    정수의 저장 범위를 벗어나는 모든 비트는 버려진다.

    • Left shift(<<)
      해당 자릿수의 비트를 왼쪽으로 n칸 옮기고 n칸은 0으로 채워짐.
      왼쪽으로 이동시 값이 2배가 된다.
    • Right shift(>>)
      해당 자릿수 비트를 오른쪽으로 n칸 옮기고 n칸은 0으로 채워짐.

    'developing study' 카테고리의 다른 글

    [Swift] Combine - sink  (0) 2024.08.25
    TCA 적용해 iOS앱 만들기 - 첫번째  (0) 2024.08.24
    Swift - prefix, suffix  (0) 2024.01.12
    Swift - replacingOccurences/Subrange  (0) 2024.01.12
    Swift - CaseIterable  (1) 2024.01.12

    댓글

Designed by Tistory.