비트 연산자

2024. 12. 30. 11:18·내배캠/C++

비트 연산자  /  '&'

 

두 정수의 이진수 표현에서 같은 자리의 비트를 비교하여, 두 비트가 모두 1일 때만 '1'을 반환하고 나머지 경우에는 '0'을 반환하는 연산자이다.

  • 하드웨어 수준에서 작동하므로, 산술 연산보다 빠르다.
  • 특정 비트만 다루는 작업에서 간결하고 명확하다.
  • 비트 단위로 데이터를 조작하거나 검사할 수 있다.

 

*비트 And연산자를 활용해 홀수인지, 짝수인지 확인

int n = 7;

if (n & 1)
{
	cout << "n은 홀수 입니다.";
}
else
{
	cout << "n은 짝수 입니다.";
}

 

 

 

 

비트 연산자  /  '>>' , '<<'

'>>' 이 비트 연산자는 "오른쪽으로 비트를 이동" 시키는 연산이다. 

a >> b 라고 한다면 숫자 a의 비트를 오른쪽으로 b만큼 이동시키는 연산을 의미하고 결과적으로는 a를 2의 b 제곱으로 나눈 몫과 같아진다는 것을 확인할 수 있다.

반대로  a << b 라고 한다면 숫자 a의 비트를 왼쪽으로 b만큼 이동시키는 연산을 의미하고 a에 2의 b 제곱을 곱한 것과 같다.

 

말이 어려운데 쉽게 예제를 통해 살펴보자.

*8 >> 1 

00001000 (8) >> 1 = 00000100 (4)

숫자 8의 이진수는 00001000 이고 '>> 1'을 적용한다면 00000100이 되고 값은 4가 된다.

 

*16 >> 2 

16 = 00010000 >> 2 = 00000100 (4)

16의 비트를 오른쪽으로 2만큼 이동시켰을 때, 16을 2의 2제곱으로 나눠 4가 되는 것을 확인 할 수 있다.

 

*5 >> 1

5 = 00000101 >> 1 = 00000010 (2)

5의 비트를 오른쪽으로 1만큼 이동시켰을 때, 5를 2로 나눠 2가 되는것을 확인할 수 있다.

 

나눗셈 연산 'a / 2'와 'a >> 1'은 동일한 결과를 도출하지만 비트 연산을 사용하는 이유는 속도와 효율성 때문이다.

https://dong-grae.tistory.com/89 코트카타를 하던 중 다른 사람 코드 리뷰를 해보다가 비트 연산자를 적극적으로 사용한 사람이 있었는데, 확실히 코드가 간결해보이고 속도도 빨랐다.

 

 

 

 

 

*추가적인 비트 연산에 대해 정리할 예정.

'내배캠 > C++' 카테고리의 다른 글

디자인 패턴(Singleton Pattern)  (0) 2024.12.30
std::toupper / std::tolower  (0) 2024.12.30
객체 지향적 설계 연습  (0) 2024.12.27
std::rand / std::srand / std::time  (0) 2024.12.26
std::fixed / std::setprecision  (0) 2024.12.26
'내배캠/C++' 카테고리의 다른 글
  • 디자인 패턴(Singleton Pattern)
  • std::toupper / std::tolower
  • 객체 지향적 설계 연습
  • std::rand / std::srand / std::time
동그래님
동그래님
  • 동그래님
    개발자 동그래
    동그래님
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • 공부 (51)
        • Code Cata (50)
      • 내배캠 (151)
        • TIL (50)
        • C++ (37)
        • Unreal Engine (48)
        • GAS(Gameplay Ability System.. (16)
      • Project (7)
        • Gunfire Paragon (5)
        • Arena Fighters (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    동그래님
    비트 연산자
    상단으로

    티스토리툴바