진법에 대한 이해
[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 |