안녕하세요 여러분. 사실 제가 블로그를 쓰게 된 가장 큰 동기가 c언어 공부를 위해 공부한 내용을 정리도 하고, 저처럼 초보자들과 공유하면 좋겠다라는 생각으로 작성을 했는데, 이 c언어를 너무 놓고 살았습니다 ㅠㅠ
이제 다시 시작해보려 합니다!
기다려주신분들(기다렸다고 해라) 감사합니다!
자 지난글에서 이어서 형 변환에 대해서 알아보겠습니다!
지난글에서는 소수의 10진법, 2진법을 변환하는 수학적 과정을 살펴보았습니다. 오늘은 IEEE745 방식으로 소수를 저장하는 방법에 대해서 알아보겠습니다.(IEEE754가 뭔지 궁금하시면 https://computerchild.tistory.com/8 )
부호 bit에는 0 이상이면 0으로 표시하고, 0 이하면 1로 할당합니다. -118.625는 부호bit가 1이겠죠? 다음으로, 정규화(Normalization) 과정을 거쳐야 해요. 정규화란 이진수를 1.xxxx 형태로 만드는 과정이에요. -118.625의 이진수 형태는 1110110.101인데, 이를 1.110110101로 바꾸게 되죠.
이때 가수 부분에는 xxxx, 즉 110110101이 저장돼요. 정규화 과정에서 얼마나 쉬프트 연산이 일어났는지를 계산하여 지수 부분을 결정해요. 위의 예시에서 1110110.101을 1.110110101로 바꾸었으므로, 6번 오른쪽으로 쉬프트가 일어났고, 따라서 지수에는 6이 오게 돼요. 이 지수는 나중에 계산할 때 중요한 역할을 하죠.
이제 IEEE 754 방식의 예시를 살펴볼게요. 예를 들어, 0x80600000이라는 32비트 부동 소수점 수를 생각해보세요. 이 값을 이진수로 변환하면 S(부호) = 1, E(지수) = 0(비정상 수), F(가수) = 0.110...으로 나타낼 수 있어요. 이 값을 계산하면 (-0.11 x 2^-126)이라는 결과를 얻을 수 있죠.( 너무 어렵다. 이제 그만 넘어가겠습니다)
자 이번에는 경고가 나오지 않게, 형 변환을 강제로 해보는 방법을 알아보도록 하겠습니다.
이런식으로 강제 형 변환 즉 캐스팅을 하게되면 경고 메세지는 출력되지 않습니다. 즉, ('바꾸려는 형) 변수이름' 형태로 캐스팅을 할 수 있는 것이죠.
자 길고 긴(수학터널에 갇힌 수포자) 내용을 지나 캐스팅에 대해 알아보았습니다. 마지막으로 문제를 하나 드리면서, 오늘의 c언어 배우기는 마무리 하겠습니다!
항상 씹어먹는 C언어 저자분(이재범)께 감사드립니다.
임의의 실수에서 소수점 이하 두자리수만 추출하여 정수형 변수에 대입해봐라! 예를들어 사용자로부터 입력받은 실수 f 가 12.3456이라면 34만 추출한다. 이때 반올림은 고려하지 않아도 상관없다. f 가 달러 단위의 화폐 액수라고할 때 센트 단위만 추출해내는 경우라고 생각하면 된다. 다음 ???? 자리에 적합한 연산식을 작성하는 문제이다.
'C language(c언어)' 카테고리의 다른 글
배열(Array) - 2 메모리에서의 배열 (2) | 2024.10.02 |
---|---|
배열(Array)에 대해 알아보자! (0) | 2024.10.01 |
형 변환(타입 캐스팅) -1 (0) | 2024.02.01 |
Switch문 (2) | 2024.01.29 |
Loop 반복문 (while문) (do-while문) (0) | 2023.11.03 |