C

2020.09.25 - C

J_Bin 2020. 9. 28. 11:15

* 소수의 2진수 나타내기

 

ex ) 6.125(10)

 

> 소수점의 왼쪽은 기존방식으로 바꾼다 > 110(2) = 6(10)

 

> 소수점의 오른쪽은 0.125

> 0.125 * 2 = 0.25   > 0을 올린다

> 110.0

 

> 0.25 * 2 = 0.5   > 0을 올린다

> 110.00

 

> 0.5 * 2 = 1.0  > 1을 올린다

> 110.001

 

>> 6.125(10) > 110.001(2)  (소수점의 자리는 *2를 해서 1.0을 만들때까지)

 

ex 2) 6.1(10)

 

> 110.

 

> 0.1 * 2 = 0.2  > 0을 올린다

> 110.0

 

> 0.2 * 2 = 0.4 > 0을 올린다

> 110.00

 

> 0.4 * 2 = 0.8 > 0을 올린다

> 110.000

 

> 0.8 * 2 = 1.6 > 1을 올린다

> 110.0001

 

> 0.6 * 2 = 1.2 > 1을 올린다

> 110.00011

 

> 0.2 * 2 = 0.4 > 0을 올린다

> 110.000110 (여기서부터 무한반복)

10진수(소수점)를 2진수로 완벽하게 나타낼 수 없다.

 

 

* 컴퓨터가 소수를 저장하는 방식 IEEE-754

 

 

 

 

 

* 정규화

 

6.125 > 110.001

정규화 > 1.10001 * 2^2 (2 : 지수부, 10001 : 가수부, 부호비트 : 0)

 

 

 

* C의 type의 크기를 알아보자(Sizeof)

#include <stdio.h>

int main(void)
{
	





	// 8진수 > 앞에 0을 붙이면 된다.
	/*int a = 0107;
	printf("%d",a);*/

	// 10진수, 8진수, 16진수
	int num = 67;
	printf(" Decimal : %#d, Octal : %#o, Hexa decimal : %#x\n",num,num,num);	// #을 사용하면 어떤 진수인지 가르쳐준다

	// Sizeof (연산자) > 메모리에 얼마나 잡아먹는지? 크기가 얼마나 되는지?
	printf("The Size of int 67 is %dbytes\n",sizeof(67));
	printf("The Size of long 67L is %dbytes\n", sizeof(67.0));
	printf("The Size of int is %dbytes\n", sizeof(int));
	printf("The Size of long long is %dbytes\n", sizeof(long long));
	printf("The Size of char is %dbytes\n", sizeof(char));
	printf("The Size of short is %dbytes\n", sizeof(short));
	printf("The Size of float is %dbytes\n", sizeof(float));
	printf("The Size of double is %dbytes\n", sizeof(double));
	printf("The Size of long int is %dbytes\n", sizeof(long int));










	return 0;
}

 

 

 

 

 

'C' 카테고리의 다른 글

2020.10.06 - C  (0) 2020.10.06
2020.10.05 - C  (0) 2020.10.05
2020.09.25 - C  (0) 2020.09.25
2020.09.24 - C  (0) 2020.09.24
2020.09.23 - C  (0) 2020.09.23