안녕하세요 개발하지영의 박지영입니다.😊
오늘은 빡공단 C언어 6~10강 요약 글을 가져왔습니다.
빡공단이 뭘까?
빡공단은 배어유에서 진행하는 자기주도학습 클래스입니다.
C언어 같은 프로그래밍 클래스만 있는 것이 아닌
노션, 토익, 영어회화 등 다양한 실생활에서 유용한 강의도 많습니다.
현재 저는 빡공단 42기로 활동중이고,
참가비는 없지만 강의비(약 5만 원대)가 존재합니다.
다음으로 43기를 하니까 신청하시는 걸 추천합니다.
이제 요약정리를 보여드리겠습니다.
제 글로 C언어를 수강하시고,
빡공단 43기에서는 다른 걸 수강하시면 효율적이겠죠?? 😄
< 06강 (ascil, 문자도 숫자다) >
디지털 표헌
0과 1로 모든 것을 표현(2진수)
ex. 0과 1을 전등으로 표현할 수 있습니다.
0은 꺼짐 1은 켜짐으로요
문자는 숫자로 코디화 할 수 있습니다 -> aicii코드(아스킵코드) 사용
A = 65, a = 97, 0 = 48 이 3개의 아스킵코드만 외워두시면 활용에서는 편리합니다.
왜냐하면 B를 찾고싶으면 A의 아스킵코드인 65에서 +1만 하면 나와요 !
#include <stdio.h>
//#include == 포함한다. <stdio.h> == scanf와 printf를 사용할때 필요한 파일의 이름
#include <stdlib.h>
int main(int argc, char *argv[]){
printf("%c", 'A'); //A
printf("%d", 'A'); //65
printf("%c", 65); //A
printf("%d", 65); //65
printf("%d", 'a'); //97
printf("%c", 97); //a
printf("%d %d %d", 'a', 'b', 'c'); // 97 98 99
printf("%c %c %c", 97, 98, 99); // a b c
printf("%c %c %c", 97, 97+1, 97+2); //연산으로 해서도 가능
printf("%c %c %c", 'a', 'a+1', 'a+2'); //a b c
return 0;
//특수문자 활용도 해보면 좋아요
}
< 07강 (진법표현) >
2진수 : 0,1로 모든 것을 표현하는 수
단점 : 숫자가 커지면 자리수가 길어지는 단점
8진수 : 0~7의 숫자로 표현하는 방법
16진수 : 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11로 가는 숫자구성
(16진수의 형식지정자는 %x)
10진수(생활진수) -> 2진수로 변경
(소인수분해처럼 -> 2가 남지않을 때 까지 2로 나누기 ->
이때 전부 다 나누었을 때 나머지가 남는 것 1 아니면 나머지가 안남는 0 이걸 모두 정렬 후 2에 곱하기)
2진수 -> 8진수로 표현
(2진수를 3개씩 나눈 후 8진수로 변환하고 합치기)
2진수 -> 16진수로 표현
(2진수를 4개씩 나눈 후 16진수로 변환하고 합치기)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
printf("%d \n", 123);
printf("%d \n", 0b01111011); //123 (10 -> 2진수)
printf("%o \n", 123); //173 (10 -> 8) 123을 8진수로 표현
//(8진수는 173을 일칠삼 이라고 읽는다)
printf("%x \n", 123); //7b (16진수)
printf("%d \n", 0173) //123
printf("%d \n", 0x7b); //123 (7b앞에 0x라는 것을 붙여주어야 한다)
return 0;
}
< 08강 (연산자1) >
관계 만족 할 경우 True
관계 불만족 할 경우 False
관계 연산자
> 왼쪽이 오른쪽보다 크다, >= 왼쪽이 오른쪽보다 크거나 같다,
< 오른쪽이 왼쪽보다 크다, <= 오른쪽이 왼쪽보다 크거나 같다,
== 같다, != 다르다
+ 더하기 , - 빼기 , * 곱하기 , / 나누기 , % 나머지
++ 원래의 값에 +1, -- 원래의 값에 –1
+=, -= 줄여서 표현 가능
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
int a;
a = 123; //대입연산자
printf("%d", a);
a = 123 + 1;
printf("%d", a); //124
a = 123 - 1; //122
printf("%d", a);
a = 123 * 2; //246
printf("%d", a);
a = 123 / 10; //12
printf("%d", a);
a = 123 % 2; //1
printf("%d", a);
int A, B;
A = 20;
B = 30;
printf("%d", A>B); //F or 0
printf("%d", A<B); //T or 1
printf("%d", A>=B); //F or 0
printf("%d", A<=B); //T or 1
printf("%d", A==B); //F or 0
printf("%d", A!=B); //T or 1
A++;
printf("%d", A); //21
A--;
printf("%d", A); //20
A+=1;
printf("%d", A); //21
A-=1;
printf("%d", A); //20
return 0;
}
< 09강 (연산자2) >
논리연산자
&& : and
|| : or
! : not
비트연산자
& : and ex. 1100 1000 => 1000
| : or ex. 1001 0110 => 1111
~ : not ex. 1100 -> 0011
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
int a=1, b=0, c-1;
int R1, R2, R3, R4, R5, R6;
R1 = a&&b;
R2 = a&&c;
R3 = a||b;
R4 = b||c;
R5 = !a;
R6 = !b;
printf("%d \n", R1);
printf("%d \n", R2);
printf("%d \n", R3);
printf("%d \n", R4);
printf("%d \n", R5);
printf("%d \n", R6);
//
int A=0b1100, B=0b1010;
int Re1, Re2, Re3;
Re1 = A & B;
Re2 = A | B;
Re3 = ~A;
printf("%x \n", Re1);
printf("%x \n", Re2);
printf("%x \n", Re3);
return 0;
}
< 10강 (비트 쉬프) >
비트 쉬프트 연산
좌측 쉬프트 연산 (<<<)
ex. 1011110 <<1 =>101111100 (맨 뒷자리 0이 채워짐)
우측 쉬프트 연산 (>>>)
ex. 1011110 >>1 =>01011111 (맨 앞에 1이 채워지며 뒤로 밀림(맨 뒤 하나 없어짐)
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
int a = 0b0001;
a=a<<1;
printf("%x", a); //2
a=a<<2;
printf("%x", a); //4
a=a>>1;
printf("%x", a); //4
a=a>>2;
printf("%x", a); //2
//특징 : 가중치를 가진다
int A = 0b1000;
A=A>>1;
printf("%x", A); //4
int b = 128;
b=b<<1;
printf("%x", A); //256
//%x는 16진수라서 16진수 형태로 변환되어 나옵니다.
//2 4 8 16 32 이걸로 연습하시면 쉬워요 (경험담)
return 0;
}
이상
빡공단 C언어 클래스 6~10강 요약을 마칩니다.
요약이 유용하고 마음에 드셨다면 좋아요와 댓글, 팔로우 부탁드립니다.
좋은 개발자로 성장하기 위한 한 학생의 글이니
혹시 문제점이나 다르게 적은 게 있다면 댓글로 피드백 부탁드립니다!!
혼공단(컴퓨터구조 + 운영체제), 코딩자율학습(파이썬) 등의 요약글도 있으니 많이 봐주세요 !!