[ 흥달쌤 유투브 강의 정리 ]
https://www.youtube.com/watch?v=avot35M_ETM&t=6s
(11강) 진법변환, 비트연산자
[ 진법변환 ]
(1) 10진수 -> 2진수 (0~1)
19 / 2 = 9 ...1
9 / 2 = 4 ...1
4 / 2 = 2 ...0
2 / 2 = 1 ...0
19 ---> 10011
... 32 16 8 4 2 1 => 19를 만들기 위한 자릿수를 채워서 변환해도 됨.
1 0 0 1 1
(2) 2진수 -> 8진수 (0~7)
1 0 0 1 1 => 3자리씩(7) 자르기
0 1 0 / 0 1 1
4 2 1 / 4 2 1 => 이중 1에 해당하는 숫자 더하기
2 / 3
1 0 0 1 1 ---> 23
(2) 2진수 -> 16진수 (0~15)
1 0 0 1 1 => 4자리씩(15) 자르기
0 0 0 1 / 0 0 1 1
8 4 2 1 / 8 4 2 1 => 이중 1에 해당하는 숫자 더하기
1 / 3
1 0 0 1 1 ---> 13
[ 비트연산자 ]
* 비트연산자 종류
* & 비트논리곱(AND) _ 둘다 참일때 참
5 & 3 ( 5 => 0101 , 3 => 0011)
0 1 0 1
0 0 1 1
=> 0 0 0 1
8 4 2 1
5 & 3 ---> 1
* | 비트논리합(OR) _ 둘중 하나가 참일때 참
0 1 0 1
0 0 1 1
=> 0 1 1 1
8 4 2 1
5 | 3 ---> 7
* ^ 비트 배타적 논리합(XOR) _ 같으면 거짓 다르면 참
0 1 0 1
0 0 1 1
=> 0 1 1 0
8 4 2 1
5 ^ 3 ---> 6
* ~ 비트 NOT
~ 5 => 양수인 경우 +1 하고 - 붙여주기 / 음수인 경우 -1 하고 + 붙여주
~ 5 ---> - 6
[ 예제 ]
19 => 1 0 0 1 1
13 => 0 1 1 0 1
& : 0 0 0 0 1 => 1
| : 1 1 1 1 1 => 31
^ : 1 1 1 1 0 => 30
... 16 8 4 2 1 (10진수)
~ 16 => - 17
~ - 16 => 15
0x => 16진수라는 표시 // 0x0f => 16진수 15 // %d => 부호있는 10진수 출력
x = 11 (16진수) / 0 0 0 1 0 0 0 1 (2진수)
y = 11 & 15 (16진수)
z = 11 | 15 (16진수)
11 => 0 0 0 1 0 0 0 1 => 17 (10진수)
15 => 0 0 0 0 1 1 1 1
y = & : 0 0 0 0 0 0 0 1 => 1 (16진수) / 1 (10진수)
z = | : 0 0 0 1 1 1 1 1 => 1f (16진수) / 31 (10진수)
8 4 2 1 / 8 4 2 1 (16진수)
x = 17 , y = 1, z = 31
* 16진수 (0~15)
0, 1, 2, 3, ... 9, A, B, C, D, E, F, => 0 ~ 15
10, 11, 12, 13, ...19, 1A, 1B, 1C, ...1F,
20, 21, 22, 23, ... 29, 2A, 2B, 2C, ...2F,
............
90, 91, 92, 93, ... 99, 9A, 9B, 9C, ...9F,
A0, A1, A2, A3, ...A9, AA, AB, AC, ...AF,
B0, B1, B2, B3, ...B9, BA, BB, BC, ...BF,
............
'정보처리기사 > c언어강의' 카테고리의 다른 글
[C언어(강의)] 19강~20강 (for, continue, break, 다중for문) (0) | 2024.06.22 |
---|---|
[C언어(강의)] 14강~18강 (if문, switch문, 반복문, for문, while문, do~while문) (0) | 2024.06.02 |
[C언어(강의)] 12강~13강 (매크로, 비트연산, 삼항연산자) (0) | 2024.06.02 |
[C언어(강의)] 9~10강 (산술연산자, 출력형식) (0) | 2024.05.15 |
[C언어(강의)] 1~8강 (변수, 데이터 타입, 연산자) (0) | 2024.02.04 |