변수 101 : 컴퓨터 이해하기

슬프게도 2018년에는 프로그래밍을 배우고 싶어하는 사람이 많지 않다는 것을 알았습니다  이전 기사 그리고 잠시 후에 그 사람이 무료 소프트웨어 프로젝트에 대한 커밋을 보낼 수 있다면 나는 내 작업에 만족할 것입니다 

보안을 좋아하시는 분들을 위해 다음 글은 보안에 관한 게시물이 될 것이라고 약속합니다.  누구든지 다른 내용(예: Git, 서버 관리 또는 내가 아는 것 :p)을 배우고 싶거나 다른 주제에 대해 댓글을 달고 싶다면 모두가 행복할 것입니다. 단순히 댓글 상자로 답변할 수 없는 문제가 있으면 알려주시면 어떻게 처리할 수 있는지 살펴보겠습니다 

글쎄, 이제 우리가 우리의 일로 가면, 이전에 타이핑에 대해 이야기했고 이것은 우리가 변수를 프로그램에 저장하는 방식과 관련이 있다는 것을 이제 우리는 내부에서 일어나는 일을 약간 검토하고 바라건대 충분히 명확 할 수 있습니다.

비트

나는 이것이 내가 프로그래밍에 대해 글을 쓸 때 항상 다루는 주제라고 생각합니다. 이것은 확실히 나를 매료시키고 많은 것을 이해하는 데 도움이 되는 주제입니다. 이제 그것이 무엇인지, 어떻게 읽는지에 대해 조금 설명하려고 노력할 것입니다. , 그리고 그 용도는 

전등 스위치를 생각해보십시오. 회로가 닫히면 0 화면에서 스위치의 위치를 ​​변경할 때 1 간단하지 않나요?

이제 0 및 1 그것들은 많은 것을 의미 할 수 있습니다. 그것은 모두 당신이 가지고있는 창의성에 달려 있습니다. 누군가가 북쪽으로 갈 것인지 남쪽으로 갈 것인지 알고 싶습니다. 1 북쪽을 의미 할 수 있고 0, sur  누군가가 남자인지 여자인지 알고 싶다고 가정해 보겠습니다. 1 그것은 남자 일 수 있고 0, 여자  . 이제 이 사람이 젊은지 나이가 많은지(>22) 알고 싶습니다. 0 젊고 1, 더 높습니다. 계속 상상해 봅시다… 애완 동물이 있습니까? 1 나는 그렇다고 말할 것입니다. 0 나는 아니오라고 말할 것입니다 이제 나와 함께 다음 줄을 읽으십시오.

1001

이것은 짧은 말입니다 ...

Una jóven mujer de no más de 22 años se dirige al norte acompañada de su mascota.

다음과는 매우 다릅니다.

0110 o Un hombre con más de 22 años de edad se dirige solo hacia el sur.

바이트

이제 한 단계 더 나아가 바이트를 읽는 방법을 배워 보겠습니다. 바이트는 8 비트의 시퀀스로, 오른쪽에서 왼쪽으로 각각 읽습니다. 1 의 힘을 나타냅니다 2 에 제기 n donde n 비트의 위치입니다. 중국어처럼 들리니 간단한 예를 들어보겠습니다 

01001011 이 바이트가 있습니다. 이제 오른쪽에서 왼쪽으로 (<-) 의미를 쓸 수 있도록 위에서 아래로 배치하겠습니다.

1: 위치에있을 때 비트 0 다음 2가 XNUMX 또는 2^0. 우리가 아는이 우물은 1.

1: 두 번째 비트, 이제 위치 12^1 그것은 말하는 것과 같습니다 2

0: 세 번째 비트 ... 이것은 2^2,하지만 켜져 있지 않기 때문에 그대로 두겠습니다. 0

1: 네 번째 비트, 2^3 u 8 

0: 동일 0

0: 기타 0

1: 이제 우리는 2^6 o 64

그리고 마침내 0 , 우리는 그것이 무엇을 의미하는지 이미 알고 있습니다.  이제 결과를 추가하고 다음 표와 비교해 보겠습니다.  75 열에서 찾아 보겠습니다. 소수 그리고 우리는 무엇이 나타나는지 볼 것입니다 

ASCII 테이블에 대한 이미지 결과

우리는 하나 K!! 축하합니다. 이제 이진수를 읽는 방법을 아셨습니다.  하지만 가장 현명한 사람이라면 우리가 십진수도 얻었고 여기에는 한계가 있다는 것을 알아차렸을 것입니다(모든 값이 다음과 같을 때). 1) 그 한계는 숫자에서 찾을 수 있습니다 255.

워드

이제 하나 이상이 말해 주겠지 만, 255? 또는 일본어와 같은 다른 문자는 어디에서 찾을 수 있습니까? 답은 간단 해 정리하자 2 bytes. 이제 두 가지가 있으므로 가능한 조합 수는 다음과 같습니다. 2^16 o 65536 다음과 같은 가능한 결과 0 그 중 하나이며 가능한 최대 값은 65535. 그 숫자가 누구에게나 친숙하게 들리나요? Linux 시스템의 최대 포트 수를 기억하십니까? 숙제 맡길게 

더블 워드 및 쿼드 워드

더 수학적인 경우 특정 형식도 있습니다. 두 단어 많은 사람들이 이미 상상했던 것처럼 2 word o 4 bytes (o 32 bits)의 정보는 다음과 같습니다.

11111111111111111111111111111111 에 0 a 4 294 967 295

이 시점에서 많은 사람들은 음수로 어떤 일이 일어나는지 궁금해 할 것입니다. 음수를 저장할 수 있도록 프로세서 개발자는 왼쪽의 첫 번째 비트를 부호 값으로 사용하도록 선택했습니다. 이것은 첫 번째 비트가 0 우리는 양수에 대해 이야기하고 있지만 만약 그렇다면 1 우리에게는 부정적인 점이 있습니다. 이제 비트가 왜 그렇게 특별한지 알 수 있습니다. 원하는 것은 무엇이든 될 수 있습니다 

그러나 이것은 분명히 우리에게 곱셈을 할 수있는 위치가 하나 줄어 듭니다! 그래서 우리0 a 4 294 967 295 된다 :

-2,147,483,648 a +2,147,483,647

이제 우리 중 많은 사람들이 이미 64 bits, 그리고 이것은 쿼드 워드, 우리는 0 a 18 446 744 073 709 551 615. 정말 큰 숫자네요 

왜 8 비트인가?

이것은 두 명 이상이 궁금해 할 수있는 문제이며 대답은 하드웨어에 있습니다. 처음부터 프로세서는 작업을 수행 할 수있는 데이터가 필요했습니다. 데이터는 컴퓨터의 메모리에 저장되며 프로세서가 필요할 때마다 데이터 버스를 사용하여 데이터를 가져옵니다. 고대에는 이러한 버스가주기 당 최대 8 비트를 통신 할 수있었습니다. 즉, 데이터를 이동하는 가장 효율적인 방법은 8 비트를 그룹화하여 프로세서로 보내는 것이 었습니다.

시간이 지남에 따라 오늘날까지 프로세서는 16 비트, 32 비트 및… 64 비트를 이동할 수있는 기능을 개발했습니다.

타이핑과 무슨 관련이 있습니까?

우리는 이미 모든 것이 의미가 있는 부분에 도달했습니다.  타이핑은 프로그래밍 언어가 이러한 메모리 공간의 이름을 지정하는 데 사용하는 속성입니다. 모든 변수는 호출 방법에 관계없이 이러한 데이터 유형 중 하나에 상응하는 변수를 갖습니다. 이들은 다음과 같이 알려져 있습니다. 기본 데이터 유형강력한 형식의 각 언어에는 이러한 값에 대한 개념과 이들이 나타내는 양이 있습니다. 예를 들어 C에는 라이브러리가 있습니다. limits.h 이는 원시 값의 최대 및 최소 양을 보여줍니다.

값 중 하나를 깨려고하면 어떤 일이 발생하는지 살펴 보겠습니다.

개인적인. 크리스토퍼 디아즈 리베로 스

오른쪽에는 파일의 값이 있습니다. limits.h 왼쪽에는 이러한 값 중 하나가 있습니다.unsigned short int) 및 해당 번호보다 높은 번호를 할당했습니다. 결과적으로 컴파일러는 우리가 메모리를 잘못 사용하고 있다고 경고합니다. 66666 이진 형식에 맞지 않습니다. 65535. 이것은 우리를 성능 우리가 프로그램 할 때, 당신의 가치가 시간이 지남에 따라 크게 증가하지 않을 것 또는 당신이 a의 가치만큼 큰 가치를 요구하지 않는 경우 더블 o 쿼드 워드올바른 유형을 사용하면 CPU에서 요청하는 메모리 양이 줄어들어 제대로 계산 된 경우 데이터 검색 속도가 더 빨라집니다.

통역사 측에서 이것은 암시 적 변환. 씨Javascript나 Python과 같은 언어로 변수를 정의할 때 인터프리터는 변수가 어떤 유형인지 이해하고 작업을 수행하기에 충분한 메모리 공간을 할당하는 역할을 담당합니다. 간단한 예를 살펴보겠습니다 

개인적인. 크리스토퍼 디아즈 리베로 스

보시다시피, 파이썬 인터프리터에게 변수의 타입을 설명할 필요가 없습니다. 왜냐하면 변수 자체가 타입을 할당하고 메모리에 저장하는 일을 담당하기 때문입니다 

변수 파악

이는 사용하려는 언어와 구현 유형에 따라 다르지만 프로그래밍할 수 있는 첫 번째 단계는 사용할 수 있는 변수를 배우는 것입니다.  일단 변수를 이해하면 다음을 수행할 수 있는 위치에 있게 됩니다. 정보를 저장하기 위해 효율적이고 논리적으로 사용합니다(사용자 또는 시스템에서 제공). 이것은 프로그래밍 사다리의 첫 번째 단계이며, 이 기사를 읽은 후 컴퓨터가 작동하는 방식과 정보를 저장하는 방식을 좀 더 잘 이해할 수 있기를 바랍니다. 저와 함께 다음 기사까지 계속하겠습니다. 특정 사항을 강화하거나 의견을 제시해야 하는지 알 수 있도록 귀하의 의견을 남겨 두는 것을 잊지 마십시오. 인사말