메모장
C언어 복습 11 (10진수를 2진수로, 비트연산자) 본문
참고: 정덕 - <컴맹을 위한 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)
▣ 57을 예로들어 10진수를 2진수로 만드는 법
1. 첫번째 비트(가장 오른쪽)가 1인지 0인지 판단하는 법
->57과 1을 &로 연산 =>57의 첫자리가 1이면 1 아니면 0 출력
2. 시프트 연산자를 이용 n번째 비트가 1인지 0인지 확인
-> printf("%d", (57<<n-1)&1);
3. 반복문을 통해 모든 비트 출력하기
코드정리>>
'C언어 복습' 카테고리의 다른 글
C언어 복습 13(이름을 부르면 인사해주기) (0) | 2019.06.25 |
---|---|
C언어 복습 12(Fake, Real Random Boy~) (0) | 2019.06.25 |
C언어 복습 10 (구구단을 외자 - 반복문) (0) | 2019.06.21 |
C언어 복습 9 (입력받은 숫자로 카운트다운 - 재귀함수) (0) | 2019.06.18 |
C언어 복습 8 (계산기) (0) | 2019.06.18 |