진법 변환

비트연산자
기호 | 의미 | 예 |
& | 비트 논리곱(AND) | 5 & 3 |
| | 비트 논리합(OR) | 5 | 3 |
^ | 비트 배타적 논리합(XOR) | 5 ^ 3 |
~ | 비트 NOT | ~5 (양수이면 절댓값에 +1하고 - 붙이기, 음수이면 절댓값에 -1하고 + 붙이기) |
>> | 비트값을 우측으로 이동 | 5 >> 3 |
<< | 비트값을 좌측으로 이동 | 5 << 3 |
풀이:
5(10) = 0101(2)
2(10) = 0011(2)
ㅡㅡㅡㅡㅡㅡㅡㅡ
& 연산 = 0001(2) = 1
| 연산 = 0111(2) = 7
^ 연산 = 0110(2) = 6
~연산은 시험에 안나옴
비트연산 연습하기
① 논리곱(& 연산자)
19 = 10011(2)
13 = 01101(2)
ㅡㅡㅡㅡㅡㅡㅡ
00001(2) = 1
② 논리합(| 연산자)
19 = 10011(2)
13 = 01101(2)
ㅡㅡㅡㅡㅡㅡㅡ
11111(2) = 31
④ 비트 NOT ( ~) 연산자
~16 = -17
~-16 = 15
연습문제
#incldue <stdio.h>
void main() {
int x = 0x11;
int y, z;
y = x & 0x0f;
z = x | 0x0f;
printf("x=%d, y=%d, z=%d", x, y, z);
}
나의 풀이:
x = 16진수 11 = 10진수 17 = 10001(2)
0x0f = 01111(2)
10001(2)
01111(2)
ㅡㅡㅡㅡ
y = 00001(2) = 1
z = 11111(2) = 31
강의 풀이:
0x 가 붙었다 == 16진법이라는 의미
16진법 = 0~9 에다가 10부터는 abcdef 사용, 총 16개의 문자
0x11을 10진법으로 변환하는 과정 -> 0x11은 2진법을 네 자리씩 끊었을 때 각 자리수가 1, 1이라는 의미(8421/8421) = (1/1) = 17
0x0f 와 같은 경우도 마찬가지 (8421/8421) 에서 (0/1111) = (0/f) = 15
계산 과정은 나와 동일
정답: x = 17, y= 1, z= 31
'정보처리기사' 카테고리의 다른 글
[정보처리기사] C언어 특강 13 ~ 17강 정리(삼항연산자, 제어문, 반복문) (0) | 2024.10.01 |
---|---|
[정보처리기사] C언어 특강 12강 정리(메크로, 비트연산) (0) | 2024.09.28 |
[정보처리기사] C언어 특강 10~11강 정리 (0) | 2024.09.19 |
[정보처리기사] C언어 특강 5~9강 정리 (0) | 2024.09.12 |
[정보처리기사] C언어 특강 1~4강 정리 (0) | 2024.09.10 |