분류 전체보기 71

문자열에서의 NULL

아스키 코드에서 보면 숫자로 0, 문자로 NUL이 보인다. 문자열에서 NULL이 사용되는데, %s에서 주로 사용된다. 문자열은 char들의 배열로 만들어지는데, %s로 출력할때, 어디까지 출력을 하는지 컴퓨터가 알아야 한다. 그래서 NULL값을 만나면 "아 여기가 끝이구나"하고 출력을 멈추는 것이다. NULL==\0==숫자 0 이다 문자 0이랑은 다르다.. 문자 0==숫자 48(아스키코드) 이다. NULL은 define을 통해 0으로 바뀐다. (전처리 과정)

카테고리 없음 2024.01.06

unsigned int 빼기 주의사항

unsigned 란 것은 un+signed 인데, 이는 sign,즉 부호가 없다는 의미이다. unsigned int는 int와 마찬가지로 보통 4byte를 사용한다. int 의 범위는 -2147483648~2147483647이다. unsigned int의 범위는 0~ 4294967295이다. ==> 무엇을 주의 해야 하는가? 가장 중요한 것은 빼기이다. 두 값 모두 양수이기때문에 (큰값- 작은 값)이면 문제가 안생기겠지만, (작은 값-큰값)은 음수가 되어 바로 오버플로우가 발생한다. 만약 if(a-b>=0) 이런식으로 제약을 두고 있다면 이는 잘못쓰이고 있는 것이다. 애당초 음수를 담지 못하기에 저렇게 쓰는 것은 잘못쓴것이다. 항상 참이 나오기 때문. 더하기 때에도 오버플로가 나는지 주의해야한다.

카테고리 없음 2024.01.06

24.01.05

24년도의 첫 일기이다. 코딩일기를 쓰거나 일반 일기를 쓸 것이다. 추후에는 분리를 할 것이지만, 지금은 5일의 하루가 거의 다 가고 있어서 급한 마음에 여기다가 적는다. 그래도 하는게 중요하니까.. 공부를 하는 것도 중요하다. 체계적으로 하는 것은 더 중요하다. 그리고 아웃풋을 할 수 있어야 한다!! 나는 오는 anki라는 암기 어플리케이션을 이용하여 컴퓨터로 코딩 공부를 하고, 문제를 만들고 앱과 연동시켜서 짜투리 시간에 지속적으로 암기하려고 한다. 알고리즘이 어떻게 되든 간에, 사실 중요한 것은 프로그램처럼 사람도 입출력이 가장 중요하다. 사실 어떻게 보면 입출력이 전부인 세상인 것 같다. 사실 어떻게 해야 겠다고 결심한 것은 아직 없다. 오늘 저녁에는 anki를 어떻게 활용할지 보고 자고, 내일 ..

카테고리 없음 2024.01.05

코딩 공부 7일차

백준 풀었다. 2번재단계까지 다 풀었다. 고민은 뭐냐면 일단 코딩하러 가기까지가 힘들다는 것이다. 일단 오늘 단계를 보니까 공부를 빡시게 해야겠다는 생각이 들었다... 겁나 많다 야발.. 오늘 책 배달시키려고 한다. 혼자 공부하는 컴퓨터 구조 와 운영체제 그리고 윤성우의 열혈 자료구조이다. 아무래도 시간이 그리 많지 않고, 생각보다 쓴느 작업만 하는것은 재미도 없는지라 어떻게 해야 지속가능하게 계속할 수 있는지 고민을 해보고 앞으로도 파이팅 해야겟다. 열심히 매일 가자!

카테고리 없음 2023.09.06

공부 4일차

백준 1-5 scanf("%d%d") 이렇게 붙이지 말고 띄어쓸것. int 같은 경우 4byte가 일반적이라 소수를 나타낼때 부동소수점오차 가 일어날수 있다. ex) 1/3 은 0.33333... 이다, 무한하기 때문에 애당초 유한한 비트로 이를 표현할 수 없음. 참고) 소수점의 2진수 변환또한 간단. 0.25 는 1/4이니까 0.01이런식으로 표현하면됨. 반대로 이진수에서 10진수로 변환은 0*2^0+0*2^-1+1*2^-2 로 바꾸면 됨. ieee 754 방식을 사용한다라... 그렇다면 왜 bias 의 값이 127이고 1000~ 의 값과 다른 bias의 값을 갖는 것일까? 일단 먼저 구조를 나눠 보면 부호(1)/지수(8)/가수(23) 이렇게 총 32비트로 4byte 이다. # 잠만 말이 안되는게 do..

카테고리 없음 2023.09.03

c언어 공부 3일차 -2

4-1 계산 int a, b; a = 10; b = 3; printf("a / b 는 : %f \n", a / b); -(정수형 변수) (연산) (정수형 변수) 는 언제나 (정수) 으로 유지 따라서, 실수형 데이터를 출력하는 %f 를 정수형 값 출력에 사용하면 위와 같이 이상한 결과가 나오게 됩니다. a / b 는 : 0.000000 a = 10; b = 3; printf("a / b 는 : %f \n", a / b); printf("b / a 는 : %f \n", b / a); 컴파일러가 산술 변환 이라는 과정을 거치기 때문입니다. 즉, 어떠한 자료형이 다른 두 변수를 연산 할 때, 숫자의 범위가 큰 자료형으로 자료형들이 바뀝니다. 즉, 위 그림에서도 보듯이 a 가 int 형 변수이고 b 가 doubl..

카테고리 없음 2023.09.02

c언어 공부 2일차

2-3 2진법 -2로 나누어서 나뉜 나머지를 이용하여 계산함. ex)15=2^3+2^2+2^1+2^0 =>1111 24=2^4+2^3 =>11000 16진법 -16으로 나뉜수를 나머지로 이용하여 계산함. 24=16^1+16^0*8 =>Ox18 ox는 16진수로 나타낸것을 알려줌. 16진법=>2진법 변경방법 맨 앞자리는 4자리로 맞추지 않아도 됨. 뒤에는 반드시 4자리를 남김. 뒤에서부터 4개씩 나누어서 변경시키면 2진법=>16진법으로 변경 가능임. 컴퓨터의 메모리 구조 휘발성 메모리 -램(회전 속도가 빠르다) 비휘발성 메모리 -롬, 하드디스크 컴퓨터의 한 개의 메모리 소자는 0 혹은 1 의 값을 보관할 수 있습니다. 이 이진수 한 자리를 가리켜 비트(Bit) 라고 합니다. 따라서, 1 개의 비트는 0 또..

카테고리 없음 2023.09.02

c언어 1일차

2-1 언어의 기본 #include는 안의 파일을 불러들인다는 의미이다. main 이란 모든 c 프로그램이 처음으로 실행하는 내용 (cpu에 어디서부터 글을 읽어내는지 받아드리는 내용, 즉 주소가 적혀있다.) return 0; 은 이 함수의 결과가 이상이 없다는 것을 알려준다. 만일 이상이 있다면 1등의 결과를 출력하게 함. 2-2 주석에 대하여 c언어에서 주석은 1. 한줄 주석일 경우 - // 를 사용 2. 여러줄 주석일 경우 - /* */ 로 사용 핵심 요약: 항상 주석을 다는 습관을 들이자. 문제는 정올 1-4까지 풀었습니다

카테고리 없음 2023.08.30