02-2 상수와 데이터 표현 방법

hwakyoung·2022년 8월 24일
1
post-thumbnail

오늘도 어김없이 c언어 가보자고~


정수 상수 표현법

  • 아라비아 숫자 0~9, +,-기호를 사용한다.
    *세가지 진법 즉 10진수 8진수 16진수로 표현 할 수 있다.
  • 10진수는 우리가 흔히 사용하는 수를 10진수
  • 8진법은 0~7까지의 수를 사용한다.
  • 16진수는 0~15까지의 숫자를 사용하며 10부터는 알파벳으로 나타낸다.

C언어에서 진법 표현하기

  • 8진수는 숫자앞에 0(영)
  • 16진수는 숫자앞에 0x(영엑스)를 붙여 구분한다.
  • 소문자로 나타내고 싶으면 소문자로 쓰고 대문자로 나타내고 싶으면 대문자로 쓴다.
    ex) %x -> %X

코드로 알아보자

#include <stdio.h>
int main(void)
{
printf("%d\n",12);  //10진수 정수 상수 출력
printf("%d\n",014); //8진수 정수 상수 출력
printf("%d\n"0xc);  //16진수 정수 상수 출력

return 0;
}

결과창

12
12
12

실수 상수 표현법

  • 실수는 소수점 형태와 지수 형태로 표현할 수 있다.
  • 실수는 아라비아 숫자 0~9,+,- 기호소수점을 사용하여 표현.
  • 소수점 앞이나 뒤의 무의미한 0은 생략할 수 있다.

코드로 알아보자

#include <stdio.h>
int main(void)
{
printf("%.1lf\n",1e6);
printf("%.7lf\n",3.14e-5);
printf("%le\n",0.0000314);
printf("%.2le\n",0.0000314);

return 0;
}

결과창

1000000.0
0.0000314
3.140000e-05
3.14e-05

문자와 문자열 상수 표현법

코드로 알아보자

#include <stdio.h>
int main(void)
{
printf("%c\n",'A');  //문자 상수 출력
printf("%s\n",'A');  //문자열 상수 출력
printf("%c은 %s입니다.\n",'1',"first"); //문자(%c)와 문자열(%s)을 함께 출력

return 0;
}

결과창

A
A
1은 first입니다.
  • 7행에서는 '1'은 문자 상수이고 "first"는 문자열 상수이다.
  • "A"와 같이 하나의 문자라도 큰따옴표가 붙으면 문자열 상수이다.

상수가 컴파일된 후의 비트 형태

상수 종류크기(byte)크기(byte)바뀌는 형태
정수4322진수
실수864IEEEE 754표준 double형
문자432아스키 코드 값과 같은 2진수
  • 8비트 == 1byte

문자 상수의 컴파일

  • 'A'의 아스키코드는 65이므로 정수 상수 65와 같은 형태로 번역된다.

양수의 변환

정수 13을 컴파일 하면 정수 13은 2진수로 1101이다. (4byte로 표현하기)

 |0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|0| 
 
 |0|0|0|0|1|1|0|1|
  • 0이 8개일때마다 1byte이고 13을 2진수로 고친 1103을 제외한 나머지 칸을 0으로 채워준다.

음수의 변환

  • 2의 보수란 2진수의 0과 1을 바꾼 상태를 이야기한다.
  • 예를 들어 -10은 절댓값 10을 2진수로 바꾸고 1의 보수를 구한 후 다시 1을 더해 2의 보수를 만든다.
|0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|0| |0|0|0|0|0|0|0|0| 
 
|0|0|0|0|1|0|1|0|

이렇게 되어있던게 0과 1을 바꾸게 되어 아래와 같은 결과가 나온다.

|1|1|1|1|1|1|1|1| |1|1|1|1|1|1|1|1| 1|1|1|1|1|1|1|1|

|1|1|1|1|0|1|0|1
                       

표로 정리하는 마무리

종류표현방법사용 예
정수0~9, +, - 기호 사용10, -5, +20, 0
실수0~9, +, - (소수점)기호 사용3.4, -1.7, .5, 10.0
문자문자를 작은따옴표로 묶음'A', 'b', '0', '*'
문자열하나 이상의 문자를 큰따옴표로 묶음"A", "apple"

키워드 정리

  • 10은 정수 상수, 10.0은 실수 상수, 'a'는 문자 상수, "A"는 문자열 상수이다.
  • 정수 상수의 양수는 4바이트 크기의 2진수로 음수는 2의 보수로 컴파일
  • 첫 비트는 부호비트 이후11개는 지수부, 나머지 52개는 소수부
profile
fire-irror

0개의 댓글