서빈·2023년 11월 10일

23-11-10(금)

비트연산자들을 알아보자

  • & : 이 기호는 앰퍼센드(ampersand)라 불리는데 프로그래밍에서도 AND라 불린다.
  • | : 이 기호는 버티컬 바 (vertical bar)라고 불린다.
  • ^ : 이건 캐럿(caret)이라는 기호인데 XOR 연산자로 불린다.
  • ~ : 이 물결표, 틸더(tilde)는 NOT 연산자이다.
  • << , >> : 이 둘은 각각 left, right shift로 불린다.
  • Bit : 컴퓨터에서 쓰는 비트(bit), 즉 0이나 1의 값을 가질 수 있는 디지털 정보의 최소 단위를 말한다.
  • & 연산자로 두 숫자를 연산하면, 비트 자리수들 중에 양쪽 모두 1인 것들만 1로, 나머지는 0으로 내보낸다.
  • | 연산자는 OR을 뜻한다.
  • ^는 양쪽의 값이 다르면 1을, 같으면 0을 내보낸다.
  • ~연산자는 단항 연산자이다. 0은 1로, 1은 0으로 뒤집어준다.
  • <<, >>는 이자리수들 전체를 왼쪽 또는 오른쪽으로 주어진 칸 수 만큼 shift, 이동시킨다.
  • &와 | 연산자는 자바, C, C++, C# 등의 언어들에서는 이것들을 그냥 &&,|| 연산자처럼 불리언 자료형의 논리 연산에 사용할 수 있다. &는 양쪽 모두가 true일 때, | 는 하나라도 true일 때 true를 반환한다.
  • &과 |에는 다른 점이 있는데 바로 단축 평가(short-circuit evaluation)가 되지 않는다. => 각 불리언 값이 뭐든간에 부수작용은 일단 다 일어나야 되는 상황이 있을때 사용한다.
  • & : 먼저 주어진 정수가 홀인지 짝인지 알아낼 때 &를 쓴다. 일반적으로 널리 사용되는 방법은 2로 나눈 나머지를 본다.
  • ^ : swap 즉 두 변수의 값을 서로 뒤바꿔야 할 때 일반적으로는 이와 같이 또 다른 변수를 만들어서 거기에 임시로 값을 담아둔다. 그런데 XOR 연산자를 사용하면 따로 변수를 사용하지 않고 담아둘 수 있다.
  • 연산자들을 활용한 비트마스킹을 사용하면 소규모 코드에서 이를 간결하게, 그리고 성능 면에서도 보다 빠르고 자원을 덜 소모하도록 구현할 수 있다.

회고

어제보다 확실히 작업량이 많아졌지만 아직 시간대비 효율이 안나왔습니다. 내일 시간투자는 오늘과 비슷하게 하지만 좀더 집중력을 높여서 작업을 해야겠습니다.
yml 파일 설정에서 너무 많은 시간을 잡아먹고 힘을 너무 많이 뺀게 집중력 저하에 원인 같습니다.

profile
ㅎㅇ / ㅂㅇ

0개의 댓글