본문 바로가기

C

4장 . 데이터 표현 방식의 이해

진법에 대한 이해

[n진수 표현방식]

: n개의 문자를 이용하여 데이터를 표현함

 

[2진수]

: 0과1을 이용한 데이터의 표현 (컴퓨터는 내부적으로 모든 데이터 2 진수 처리 )

ex ) 0은 0 / 1은 1 / 2는 10 / 3은 11 / 4는 100 이런식

 

[10진수]

: 0~9를 이용한 데이터 표현

ex)통상적인 숫자 표현

 

[16진수]

: 0~9 + a,b,c,d,e,f 를 이용한 데이터 표현

ex)9 , a, b, c , d , e, f , 10 (10진수 16) 이런식

 

Bit 와 Byte

[비트]

: 데이터 표현의 최소 단위 , 2진수값(0,1)중 하나를 저장

 

[바이트]

: 8비트 == 1바이트

 

컴퓨터의 데이터 표현

[8진수]

: 0~7을 이용한 데이터 표현 . 앞에 0을 붙인다.

ex)10은 012이다.

 

[16진수]

: 앞에 0x를 붙인다.

ex) 10은 0xa이다.

 

[정수의 표현 방식]

: 가장 왼쪽 비트는 부호를 표현 (0은 + , 1은 -)한며 MSB라 한다. 나머지는 데이터의 크기를 표현한다.

 

음의 정수에는 양의 정수 표현 방식을 적용하지 않는다.

ex)5는 00000101인데 , 10000101이라 생각하고 더하게 되면 엉뚱한 수가 나온다.그렇기에

2의 보수 (보수로 만들고 1을 더한다) 방식을 취한다 . 즉 -5는 11111011이 된다

 

[실수의 표현 방식]

: 정수의 표현 방식을 실수표현에 적용하면 작은 수를 표현하는데 한계를 지닌다.

실수의 방식은 오차가 존재하지만 효율적인 방식 채택 .float 에서 double로 갈수록 크기 범위가 아닌 정확도가 높아지는 것

 

비트 단위 연산

[ & 연산자 : 비트 단위 And ]

: 1&1일때만 1을 반환 , 나머지는 0을 반환

int main(void)
{
	int a=15; //00001111
    int b=20; //00010100
    int c= a&b; //00000100
    
    printf("%d",c);	//출력결과 4
}

 

[ | 연산자 : 비트 단위 Or ]

: 0|0일때만 0을 반환 , 나머지는 1을 반환

int main(void)
{	
	int a=15;	//00001111
    int b=20;	//00010100
    int c=a|b;	//00011111
    printf("OR 연산 결과 : %d",c);	//출력결과 31
}

 

[ ^ 연산자 : 비트 단위 XOR ]

: 0^1 , 1^0 일때만 1을 반환 , 나머지는 0을 반환한다 .

int main(void)
{
	int a=15	//00001111
    int b=20	//00010100
    int c=a^b;	//00011011
    
    printf("연산결과 : %d " ,c);	//출력 결과 27
}

[ ~ 연산자 : 비트 단위 NOT ]

: 0은 1 , 1은 0을 반환한다 . 음의 정수는 ~a+1로 표현이 가능하다.

int main(void)
{
	int a=15;
    int b=~a;
    printg("Not연산결과 %d",b); //출력 결과 -16
 }

[ 쉬프트 연산 ]

쉬프트 연산은 CPU의 연산이 없고 단순히 밀기에 처리속도가 빠르다.

 

왼쪽 쉬프트 연산자

a << b (a의 비트들을 b만큼 왼쪽으로 이동한 값을 반환) 

 

오른쪽 쉬프트 연산자

a >> b (a의 비트들을 b만큼 오른쪽으로 이동한 값을 반환) 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[ | 연산자 : 비트 단위 Or ]

: 0|0일때만 0을 반환 , 나머지는 1을 반환

'C' 카테고리의 다른 글

6장 . Printf 와 Scanf에 대한 고찰  (1) 2023.01.01
5장 . 상수와 기본 자료형  (0) 2023.01.01
3장 . 변수와 연산자  (0) 2023.01.01
2장 . 프로그램의 기본 구성  (0) 2023.01.01
1장 . 이것이 c언어이다  (0) 2023.01.01