1010 / A / 10
1011 / B / 11
1100 / C / 12
1101 / D / 13
1110 / E / 14
1111 / F / 15
*000 0000 0000 0000 0000 0000 0000 000# //32bit 2^8=256가지
* = MSB(Most Significant Bit)
# = LSB(Least Significant Bit)
2^3 / 8가지
2^4 / 16가지
2^5 / 32가지
2^6 / 64가지
2^7 / 128가지
2^8 / 256가지
......
2^16 / 65536가지
......
2^32 / 4294967296가지
modular operation
1111 + 1 = (1)0000
0에대한 1의보수 1 +1
1에대한 1의보수 0 +1
0에대한 2의보수 10
1에대한 2의보수 1
1의 보수
0101
+1010
------
1111
2의 보수
0101 //5
+1011 //-5
------
0000
0000 0000 0000 0000 0000 0000 0000 1010 //10
1111 1111 1111 1111 1111 1111 1111 0101 + 1
1111 1111 1111 1111 1111 1111 1111 0110 //-10 ??
0000 0000 0000 0000 0110 1001 0000 0000 //??
1111 1111 1111 1111 1001 0110 1111 1111 + 1
1111 1111 1111 1111 1001 0111 0000 0000 //-??
//가장 마지막 에 나오는 0을 1로 바꾸고 그이후의 1은 0으로 바꿈!!!!
4칸으로
-8~0~7(~15)까지 저장가능
signed int a=-1;
unsigned int b=255;
char ch=-1;
printf("%d",ch);
signed / %u / 4294967295
unsigned / %u / 255
____ ____ ____ ____ ____ ____ 1111 1111 //char
1111 1111 1111 1111 1111 1111 1111 1111 //singned
0000 0000 0000 0000 0000 0000 1111 1111 //unsigned(바뀌었나??)
//확장시 주의!!!
//입력시는 문제없음!!!
double db=6.5;
6.5 -> 110.1 -> 1.101x2^2(normalization:정규화된 표현법)
정규화의 장점
1.부호 : +
2.지수 : 2
3.유효숫자 : 1101
IEEE
single : 4자리
double : 8
quad : 16
____ ____ ____ ____ ____ ____ ____ ____
0___ ____ ____ ____ ____ ____ ____ ____ //부호 1비트 63
_100 0000 0000 ____ ____ ____ ____ ____ //지수 11비트 62~52
____ ____ ____ 1010 00.......................0 //유효숫자 나머지.. 51~0
//2진수를 지수로 표현시 맨 앞자리는 1이므로 1을 제외한 유효숫자를 기입
1101 -> _101
2^53=10^x
x=약15
까지 저장가능
그에반해
1234568901234567890은 정확히 처리곤란
유효숫자가 더 많기 때문에
0.1234567890123456789
%lf // 소수점6째자리까지..(기본)
%.30lf // 소수점 30째자리까지
1011 / B / 11
1100 / C / 12
1101 / D / 13
1110 / E / 14
1111 / F / 15
*000 0000 0000 0000 0000 0000 0000 000# //32bit 2^8=256가지
* = MSB(Most Significant Bit)
# = LSB(Least Significant Bit)
2^3 / 8가지
2^4 / 16가지
2^5 / 32가지
2^6 / 64가지
2^7 / 128가지
2^8 / 256가지
......
2^16 / 65536가지
......
2^32 / 4294967296가지
modular operation
1111 + 1 = (1)0000
0에대한 1의보수 1 +1
1에대한 1의보수 0 +1
0에대한 2의보수 10
1에대한 2의보수 1
1의 보수
0101
+1010
------
1111
2의 보수
0101 //5
+1011 //-5
------
0000
0000 0000 0000 0000 0000 0000 0000 1010 //10
1111 1111 1111 1111 1111 1111 1111 0101 + 1
1111 1111 1111 1111 1111 1111 1111 0110 //-10 ??
0000 0000 0000 0000 0110 1001 0000 0000 //??
1111 1111 1111 1111 1001 0110 1111 1111 + 1
1111 1111 1111 1111 1001 0111 0000 0000 //-??
//가장 마지막 에 나오는 0을 1로 바꾸고 그이후의 1은 0으로 바꿈!!!!
4칸으로
-8~0~7(~15)까지 저장가능
signed int a=-1;
unsigned int b=255;
char ch=-1;
printf("%d",ch);
signed / %u / 4294967295
unsigned / %u / 255
____ ____ ____ ____ ____ ____ 1111 1111 //char
1111 1111 1111 1111 1111 1111 1111 1111 //singned
0000 0000 0000 0000 0000 0000 1111 1111 //unsigned(바뀌었나??)
//확장시 주의!!!
//입력시는 문제없음!!!
double db=6.5;
6.5 -> 110.1 -> 1.101x2^2(normalization:정규화된 표현법)
정규화의 장점
1.부호 : +
2.지수 : 2
3.유효숫자 : 1101
IEEE
single : 4자리
double : 8
quad : 16
____ ____ ____ ____ ____ ____ ____ ____
0___ ____ ____ ____ ____ ____ ____ ____ //부호 1비트 63
_100 0000 0000 ____ ____ ____ ____ ____ //지수 11비트 62~52
____ ____ ____ 1010 00.......................0 //유효숫자 나머지.. 51~0
//2진수를 지수로 표현시 맨 앞자리는 1이므로 1을 제외한 유효숫자를 기입
1101 -> _101
2^53=10^x
x=약15
까지 저장가능
그에반해
1234568901234567890은 정확히 처리곤란
유효숫자가 더 많기 때문에
0.1234567890123456789
%lf // 소수점6째자리까지..(기본)
%.30lf // 소수점 30째자리까지