데이터가 저장되는 방식에 달려 있습니다. 샘과의 상호 작용은 당신이 그것을 적을 수는 있지만 8 자 정도의 종이 만 가지고 있으면 더 잘 비교할 것입니다.
"샘, 전화 번호를 알려줘."
"5555555555"
"아뇨, 저는 종이가 부족합니다. 내가 요청한 데이터의 양을 미리 알고 있었다면 더 잘 준비 할 수있었습니다!"
대신 대부분의 언어는 유형을 선언하므로 미리 알고 미리 준비합니다.
"전화 번호는 얼마나 되나요?"
"10 자."
"좋아, 그럼 더 큰 종이를 가져 오자. 이제 전화 번호를 알려줘."
"5555555555"
"알았어! 고마워 샘!"
데이터가 저장되는 실제 기본 방법을 살펴보면 훨씬 더 유연 해집니다. 당신이 저와 같다면, 당신은 잡다한 노트, 숫자 만 적어 놓은 것, 상황에 대한 내용이나 라벨링이없는 노트북을 가지고 있고, 3 일 후에 그 의미가 무엇인지 전혀 알지 못합니다. 이것은 컴퓨터에서도 많은 문제입니다. 많은 언어에는 "int"유형 (int, long, short, byte) 및 "float"(float, double) 유형이 있습니다. 왜 필요한가요?
먼저 정수가 어떻게 저장되고 일반적으로 컴퓨터 내에서 표현되는지 살펴 보겠습니다. 기본 수준에서는 모두 이진 (1과 0)이라는 것을 알고있을 것입니다. 이진수는 실제로 우리의 십진수 시스템과 똑같이 작동하는 숫자 시스템입니다. 10 진수로 0에서 9까지 계산하고 (제한하지 않는 무한한 0을 포함) 0으로 롤오버하고 다음 숫자를 증가시켜 10을 갖습니다. 19에서 20까지 롤오버 할 때까지 반복합니다. 99에서 100 등으로 롤오버 될 때까지 반복하십시오.
이진수는 0에서 9가 아니라 0에서 1까지로 계산된다는 점을 제외하면 다르지 않습니다. 0, 1, 10, 11, 100, 101, 110, 111, 1000으로 계산됩니다. 따라서 9를 입력하면 이진수로 기록 된 메모리에 1001입니다. 이것은 실제 숫자입니다. 정확히 그 형태로 더하기, 빼기, 곱하기 등을 할 수 있습니다. 10 + 1 = 11. 10 + 10 = 100 (1을 0으로 롤오버하고 1을 수행). 11 x 10 = 110 (및 동일하게 11 + 11 = 110).
이제 실제 메모리 (레지스터 포함)에는 서로 바로 옆에있는 비트 (잠재적 1 또는 0 ')의 목록, 배열이 있습니다.이 비트를 논리적으로 구성하여 1보다 큰 수입니다. 문제는 소수점 이하 자릿수로 무엇을합니까? 레지스터의 두 비트 사이에 하드웨어를 삽입 할 수 없으며 각 비트 쌍 사이에 "소수 비트"를 추가하는 데 너무 많은 비용이 듭니다. 그래서 뭐 할까?
당신은 그것을 인코딩합니다. 일반적으로 CPU 또는 소프트웨어의 아키텍처는이 작업을 수행하는 방법을 결정하지만 가장 일반적인 방법은 레지스터의 첫 번째 비트에 가수 (숫자가 이동 한 부호) (+ 또는-, 일반적으로 1은 음수)를 저장하는 것입니다. 그러나 여러 번 다음 X 비트 수에 대해서는 소수점을 제거해야하고 나머지는 지수 (이동 해야하는 횟수)입니다. 과학적 표기법과 비슷합니다.
입력하면 컴파일러가보고있는 내용을 알 수 있습니다. 값 1.3을 레지스터 1에 저장했다고 가정 해 봅시다. 여기에는 부호 1 비트, 가수 4, 지수 3 (기호 1 비트, 크기 2)와 같은 멋진 인코딩 방식이 있습니다. 양수이므로 부호가 양수 (0)입니다. 우리 가수는 13 (1101)이고 지수는 -1 (101 (음수의 경우 1, 01 = 1))입니다. 따라서 01101101을 레지스터 1에 저장합니다. 이제이 변수를 입력하지 않았으므로 런타임에서이 변수를 사용하면 "이것은 정수입니다. 왜 그렇지 않습니다"라고 표시되므로 값을 인쇄 할 때 109 (64 + 32 + 8 + 4 + 1), 그렇습니다.
그러나 모든 언어에서 명시 적으로 입력해야하는 것은 아닙니다. C #에는 컴파일시 변수 유형을 해석하는 키워드 "var"이 있으며 Javascript와 같은 다른 언어는 변수에 정수를 저장 한 다음 부울에 할당 할 수있을 정도로 완전히 동적으로 유형이 지정됩니다. 문자열에 다시 할당하면 언어가 모든 것을 추적합니다.
그러나 컴파일러, 인터프리터 또는 런타임에서 훨씬 더 쉽습니다. 프로그래머에게 어떤 종류의 정보를 요청하기 위해 모든 것을 입력하여 정렬하는 데 귀중한 리소스를 소비 할 필요가 없기 때문에 프로그램 속도가 더 빠릅니다. 당신이주는 데이터.