비트논리연산자와 진수변환

Jaemyeong Lee·2024년 8월 15일
0

어소트락2017

목록 보기
4/20

진수 변환 및 비트 연산에 대한 이해

진수란 무엇인가?

진수는 숫자 체계에서 사용되는 기본 단위입니다. 일반적으로 우리가 사용하는 숫자 체계는 10진수이며, 0부터 9까지의 숫자를 사용합니다. 하지만 컴퓨터 과학에서는 이외에도 2진수, 8진수, 16진수가 자주 사용됩니다.

  • 2진수 (Binary): 0과 1로만 구성된 숫자 체계입니다.
  • 8진수 (Octal): 0부터 7까지의 숫자만을 사용하는 숫자 체계입니다.
  • 10진수 (Decimal): 0부터 9까지의 숫자를 사용하는 우리가 가장 익숙한 숫자 체계입니다.
  • 16진수 (Hexadecimal): 0부터 9까지의 숫자와 A부터 F까지의 문자를 사용하는 숫자 체계로, A는 10, B는 11, ... F는 15를 의미합니다.

진수 변환 과정

10진수의 숫자를 다른 진수로 변환하는 것은 매우 중요한 과정입니다. 이 예제에서는 10진수 87을 2진수와 16진수로 변환하는 과정을 설명합니다.

10진수 87을 2진수로 변환하기

2진수로 변환하기 위해서는 숫자를 2로 나누고, 그 나머지를 기록한 뒤 몫이 0이 될 때까지 계속 나눕니다.

  • 87 / 2 = 43, 나머지 1
  • 43 / 2 = 21, 나머지 1
  • 21 / 2 = 10, 나머지 1
  • 10 / 2 = 5, 나머지 0
  • 5 / 2 = 2, 나머지 1
  • 2 / 2 = 1, 나머지 0
  • 1 / 2 = 0, 나머지 1

나머지 값을 역순으로 나열하면 2진수 1010111이 됩니다.

2진수에서 16진수로 변환하기

16진수로 변환할 때는 2진수를 오른쪽에서부터 4자리씩 끊어서 각각의 값을 계산합니다.

  • 1010111 -> 0101 0111로 4자리씩 끊습니다.
  • 8421 8421 순서로 각 자리의 값을 계산합니다.
    • 0101 -> 5 (8x0 + 4x1 + 2x0 + 1x1)
    • 0111 -> 7 (8x0 + 4x1 + 2x1 + 1x1)

따라서, 16진수로 변환된 값은 57이 됩니다.

비트 단위 논리 연산자

비트 단위 논리 연산자는 2진수 각 비트별로 연산을 수행합니다. 주요 논리 연산자에는 AND(&), OR(|), NOT(~), XOR(^)가 있습니다. 각 연산자의 작동 방식은 다음과 같습니다:

  • AND(&): 두 비트가 모두 1일 때만 1을 반환합니다.
  • OR(|): 두 비트 중 하나라도 1이면 1을 반환합니다.
  • NOT(~): 비트의 값을 반전시킵니다. 1은 0으로, 0은 1로 바꿉니다.
  • XOR(^): 두 비트가 서로 다를 때 1을 반환합니다.

예제: 87 & 53

먼저 87과 53을 2진수로 변환합니다.

  • 87의 2진수: 1010111
  • 53의 2진수: 0110101

이제 AND 연산을 수행합니다.

  1010111 (87)
& 0110101 (53)
  --------
  0010101

연산 결과는 2진수 0010101이며, 이를 10진수로 변환하면 21이 됩니다.

결과 출력

마지막으로, 코드는 cout을 사용하여 87과 53의 AND 연산 결과를 출력합니다.

cout << "87 & 53 : " << (87 & 53) << endl;

이 코드는 "87 & 53 : 21"이라는 결과를 출력하게 됩니다.


정리 및 블로그 포스트 결론

이번 포스트에서는 진수의 개념과 10진수를 2진수와 16진수로 변환하는 방법, 그리고 비트 단위 논리 연산자에 대해 설명했습니다. 실제 예제 코드를 통해 87과 53의 AND 연산 결과를 도출하며, 비트 연산의 개념을 더욱 쉽게 이해할 수 있었습니다.

진수 변환과 비트 연산은 컴퓨터 과학에서 매우 중요한 개념이므로, 이번 포스트를 통해 기본 개념을 확실히 다질 수 있었기를 바랍니다. 다음 포스트에서는 더욱 복잡한 예제와 함께 비트 연산자의 활용 방법을 다뤄보겠습니다.

수정

  • 2024-08-15
profile
李家네_공부방

0개의 댓글