Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

메모장

C언어 복습 11 (10진수를 2진수로, 비트연산자) 본문

C언어 복습

C언어 복습 11 (10진수를 2진수로, 비트연산자)

Captic 2019. 6. 22. 14:06

참고: 정덕 - <컴맹을 위한 C언어>

♨ 개인적 해석이 다분한 글임으로, 인지하지 못한 오류가 있을 수 있습니다 

 

▣ 10진수를 2진수로 표현하기

 1. 사용자로부터 10진수 입력받기

 

 2-1. 첫번째 비트(가장 오른쪽)가 1인지 0인지 확인

      ->1과 숫자를 &로 연산 => 1이면 1 아니면 0 출력

 2-2. 시프트 연산자를 이용 n번째 비트가 1인지 0인지 확인

 2-3. 반복문을 통해 모든 비트 출력하기

 

▣ 비트? Bit!

 -> 데이터를 나타내는 최소 단위. 모든 데이터는 0과 1의 조합으로 구성되는데, 이 0또는 1이 하나의 비트가 됨. 1개의        비트는 두 가지 상태를 나타낼 수 있으므로 n개의 비트로는 2ⁿ가지의 상태를 나타낼 수 있음

    (출처 - 킹무위키)

    (2진수 = 비트, 라고 생각하는 것이 편하다)

 

 컴퓨터는 2진수로(0,1) 모든 것을 처리한다는 것은 잘 알려진 사실이다그러므로 우리가 알기 쉬운 10진수 보다

 *비트 연산자를 활용하여 2진수로 표현하는 것이 알파고님의 마음을 더 잘 알 수 있다

 

*비트연산자란? : 비트 연산자: 데이터를 비트 단위로 다루어야 할 때 사용하는 연산자

 

연산자 기호 기능 설명
 & 비트 단위의 AND         연산자와 피연산자의 비트가        둘다 1이어야만 1 retrun
I (\ + Shift) 비트 단위의 OR        연산자와 피연산자의 비트가       둘 중 하나라도 1이면 1 return
^ 비트 단위의 XOR 피연산자의 비트 둘이 달라야 결과가 1
<< *왼쪽으로 비트를 이동           a<<b와 같은 형태로 사용         (b는 몇칸 이동할지 결정)
>> 오른쪽으로 이동 <<와 동일
~ 비트 단위의 NOT         비트의 1과 0을 반전시키며        피연산자가 1개인 단항연산자

  * 쉬프트 연산자 -> 커서(타자칠때 깜빡이는 친구)로 생각하면 편하다

                           왼쪽으로 이동?(<<) 커서가왼쪽으로 이동

                           오른쪽으로 이동?(>>) 커서가 오른쪽으로 이동 

 

예) 

    15의 2진수 1111

      6의 2진수  110

  비트단위로 AND(&)비교 (같은 자리에 동일하게 1이 와야 1 아니면 다 0)

(발퀄주의) 자기 자기에 맞추어 비교하여 0 또는 1을 return한다

▣ 57을 예로들어 10진수를 2진수로 만드는 법

 

 1. 첫번째 비트(가장 오른쪽)가 1인지 0인지 판단하는 법

    ->57과 1을 &로 연산 =>57의 첫자리가 1이면 1 아니면 0 출력

 

 2. 시프트 연산자를 이용 n번째 비트가 1인지 0인지 확인

    -> printf("%d", (57<<n-1)&1);

 

 3. 반복문을 통해 모든 비트 출력하기

 

코드정리>>