변수 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과 같은 언어로 변수를 정의하면 인터프리터가 변수 유형을 이해하고 작업을 수행 할 수있는 충분한 메모리 공간을 할당합니다. 간단한 예를 보자 🙂

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

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

변수 파악

이것은 사용할 언어와 구현 유형에 따라 다르지만 프로그래밍 할 수있는 첫 번째 단계는 사용할 수있는 변수를 배우는 것입니다. 🙂 변수를 이해하면 다음을 수행 할 수있는 위치에있게됩니다. 정보를 저장하기 위해 효율적이고 논리적으로 사용합니다 (사용자 또는 시스템에서 제공). 이것은 프로그래밍 사다리의 첫 번째 단계이며,이 기사를 읽은 후에 컴퓨터가 작동하는 방식과 정보를 저장하는 방식을 더 잘 이해할 수있을 것입니다. 다음 기사가 나올 때까지 나와 함께 할 것입니다. 특정 요점에 대해 강화하거나 의견을 제시해야하는지 확인하기 위해 의견을 남겨주세요. 문안 인사


기사의 내용은 우리의 원칙을 준수합니다. 편집 윤리. 오류를보고하려면 여기에.

41 코멘트, 당신의 것을 남겨주세요

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   루이스

    잘 작성되고 간결하며 명확하며 동시에 모든 청중에게 흥미 로움. 좋은 작업.

    1.    크리스ADR

      대단히 감사합니다, 인사 🙂

  2.   요한 예수

    훌륭한 설명입니다. 당신은 기계입니다.

    1.    크리스ADR

      고마워.

  3.   루벤

    아주 잘 설명 된 감사합니다

    1.    크리스ADR

      읽어 주셔서 감사합니다 🙂

  4.   샌디에고

    훌륭합니다. 입력 해 주셔서 감사합니다. 바이너리 문제를 이용하면 IP, 서브넷 등의 클래스를 제공 할 수 있습니다. 나는 이것이 프로그래밍 문제가 아니라는 것을 이해하지만 그 문제에 대한 좋은 설명은 항상 계류 중입니다.
    다시 한 번 설명해 주셔서 감사합니다.

    1.    크리스ADR

      안녕 디에고, 그것은 할 수 있습니다 🙂 내가 주제에 많이 들어 가지 않았다는 사실을 말하기 위해 할 수 있지만 기사에서 공유 할 것을 찾는 것보다 조사하는 더 좋은 방법은 없습니다 🙂 우리는 목록에 남겨 둘 것입니다 다음 포스트는 이미 주제가 있고 강화를 다룰 것이기 때문입니다. 인사말 🙂

  5.   페드로

    당신은 훌륭한 교사이며 당신이 아는 것을 가르치는데 매우 관대합니다. 축하합니다. 감사합니다.

    1.    크리스ADR

      대단히 감사합니다 Pedro 🙂 저는 여전히 가르 칠 곳을 찾고 있습니다. 불행히도 여기 페루에서는 기술 전문 학위 만 있으면 어렵습니다. 그래서 지금은 여기에서 또는 제가 할 수있는 곳에서 대학 공부를 계속할 가능성을 찾고 있습니다. 외국인의 석사 학위에 지원할 수도 있습니다. 아마도 곧 이와 같은 것이 주어질 것입니다 🙂 그러나 분명히 가르치는 것이 내 하루를 만드는 것입니다 🙂 인사말

  6.   무언가

    나는 주제에 대한 더 나은 설명을 읽지 못했습니다. 첫 번째 예는 훌륭합니다.

    나는 그 단어 (16 비트 변수와 같은), 더블 워드 또는 쿼드 워드를 들어 본 적이 없지만

    "이미 프로그래밍"에 관계없이 게시물은 흥미 롭습니다. 문제가 있다면 C (limits.h)를 변수 크기의 예로 사용하고, C는 존재하는 최소한의 구체적인 사양을 가지고 있습니다.

    1.    크리스ADR

      안녕하세요 🙂 대단히 감사합니다, 나는 도중에 예제를 생각해 냈습니다. 😛 그것은 어셈블리를 조금 읽은 사람들에게 확실히 알려진 데이터이기 때문에 프로세서가 이해하는 것입니다 🙂 hahaha 확실히 C는별로 구체적이지 않습니다. 그러나 나는 그것이 지원하는 이식성과 다른 아키텍처가 너무 다양하여 C가 진정으로 이식하기 위해 각 유형의 프로세서를 수용해야한다는 사실 때문이라고 생각합니다.
      공유해 주셔서 감사합니다.

  7.   세르지오

    이 튜토리얼 시리즈가 녹을 기반으로한다면 흥미로울 것입니다. 오늘 개발되고있는 가장 흥미로운 언어 중 하나라고 생각합니다.
    나는 그 뒤에 있지만 어려운 언어라는 것을 알고 있지만 큰 미래가 있습니다 ...
    다음 기사를 기대합니다. 정말 흥미 롭습니다.
    인사말.

    1.    크리스ADR

      안녕하세요, Sergio, 확실히 흥미로울 것입니다. 그놈이 프로그램 모음 내에서 Rust를 구현할 계획이라고 들었습니다. 아직 그들이 의도 한 전체 범위를 보지 못했지만 마이그레이션이 다가오고 있습니다.
      언어에 관해서는 개인적으로 여전히 C를 배우고 있고, 앞으로 몇 달 안에 커널에서 개발을 시작할 수 있기를 원하며, 새로운 언어를 검토하기 전에 몇 가지 언어를 심도있게 배우는 것을 선호합니다. 확실히 흥미로운 것을 찾아보고 Rust로 몇 가지 예제를 해보세요. 그 문서는 그 자체로 꽤 좋아 보이기 때문입니다.
      공유해 주셔서 감사합니다 🙂

  8.   데이비드

    이 기사와 이전 기사 모두에서 아주 좋은 설명입니다. 저는 여러분이 제가 매우 흥미 롭다고 생각하는이 주제를 계속 사용하시기 바랍니다.

    1.    크리스ADR

      안녕하세요 David, 저는 또한 계속해서 글을 쓰고 특히 사람들이 자유 소프트웨어에 참여하도록 동기를 부여하기를 바랍니다. 개발할 손이 몇 개 더 있으면 좋을 것이므로 프로젝트가 너무 많고 필요합니다 🙂
      안부

  9.   마트

    튜링 머신에 대한 글을 올릴 수 있습니까?

    1.    크리스ADR

      헬로 마트 🙂 코멘트에서 이전에 만진 적이있는 것 같아요. 나는 주제에 대해 흥미로운 것을 모을 수 있다고 확신합니다 🙂 무엇이 나올 수 있는지 봅시다. 첫날부터 오늘까지 모든 기사를 읽어 주셔서 감사합니다. 항상 당신이 관심을 갖는 것을 보았습니다 🙂

  10.   앨런 라라

    와, 정말 좋은 설명 감사합니다.

    안부

    1.    크리스ADR

      Allan 감사합니다 🙂 안부

  11.   라몬 이달고

    이전 게시물을 읽었습니다! 설명 해주셔서 대단히 감사 합니다만, 나는 결코 그 단어를 이해하지 못할 것이라고 생각합니다.

    1.    크리스ADR

      안녕하세요 Ramon 🙂 둘 다 읽어 주셔서 대단히 감사합니다. 어떤 용도로든«단어»는 바이트의 진화이며, 8 비트 이전, 16 비트 이후 등의 프로세서와 비슷합니다. 이것은 매번 더 많은 공간이 필요하기 때문입니다. 프로세스와 더 나은 속도 또는 힘 ... '바이트'의 공간이 짧아 졌기 때문에 '단어'가 태어 났고, '더블'과 '쿼드'단어도 마찬가지입니다 🙂 우리가 힘을 더하게 만드는 것은 자연스러운 진화입니다 계속 개발할 수있는 공간 🙂

      안부

  12.   익명

    2018 년에 프로그램하는 법을 배웁니다 yes or yes, 감사합니다

    1.    크리스ADR

      기뻐요 🙂 최선을 다해 !! 건배

  13.   길레

    대단히 감사합니다. 나는 이미 프로그래밍하는 방법을 알고 있지만, 내가 독학 한 프로그래밍은 나쁜 관행으로 가득 차 있다는 당신의 가르침을 기다리고 있습니다.

    1.    크리스ADR

      감사합니다 Guillermo 🙂 다음 게시물에서도 흥미로운 것을 찾으시기 바랍니다 🙂 인사말

  14.   에드가

    간단한 설명이 항상 최고입니다 .. 훌륭합니다 ..
    나는 git ... 프로그래머를 위해 제안 할 것입니다. 당신이 팀으로 일하고 당신의 작업을 정리하고 싶을 때 기본입니다. .. 버전 ..

    1.    크리스ADR

      매우 사실 인 Edgar, git 문서가 이미 풍부하고 여러 가지가 이미 여러 언어로 번역되어 있기 때문에 새로운 것을 말하기가 매우 어렵지만 내용을 게시하려고 노력할 것입니다. 내가 할 수있는 일, 인사, 나눠 주셔서 감사합니다

  15.   티리 리리

    안녕하세요, 0에서 18 446의 숫자가 744 비트 십진수 값에 해당합니까 아니면 다른 값을 참조합니까? 음, 073 ^ 709의 거듭 제곱을 계산하면 결과는 다음과 같습니다. 551 615 64 2.

    1.    크리스ADR

      안녕하세요 Tiririri, 반올림 문제가 있다고 생각합니다. 명령을 사용해 볼 수 있습니다. bc? 가능한 한 정확하도록 설계된 프로그래밍 언어입니다. 2^64, 아마도 그것은 그것을 해결할 것입니다 🙂 어떻게 진행되었는지 알려주세요, 인사

      . 실제 값은 18 446이지만 744이 가능한 값으로 계산되기 때문에 073을 뺍니다.

      1.    티리 리리

        감사합니다. 인터넷에서 찾은 전력 계산기로 계산했습니다 (https://es.calcuworld.com/calculadoras-matematicas/potencias/) 그리고 그것이 나에게 준 결과였습니다.
        그리고 예, 저는 이미 bc 명령을 시도했으며, 적어 놓은 값을 효과적으로 제공합니다.

  16.   티리 리리

    다시 한 번, limits.h 라이브러리를 참조하는 이미지는 매우 작아서 읽을 수 없습니다 (적어도 모든 사람이 읽었 기 때문에 읽을 수 없었습니다). 그리고 이해하지 못하기 때문에 더 이상 계속 읽지 않습니다. 당신이 그것을 바꿀 수 있는지 모르겠습니다. 나는 당신을 괴롭히지 않았기를 바랍니다.

    1.    크리스ADR

      모바일 버전을 사용해 볼 수 있습니다. 좀 더 명확 해 보이며 워드 프레스 테마입니다. / 반면에 모든 C 헤더는 / usr / include /에서 찾을 수 있습니다.이 경우 직접 읽을 수 있습니다. 더 쉽습니다 🙂 도움이되는지 확인하기 위해 더 큰 이미지를 업로드하려고 노력할 것입니다 🙂

      1.    티리 리리

        감사합니다. 인내심을 가져야한다고 생각합니다.

  17.   카테 쿄

    지금부터 언어의 변수와 표현 범위를 조금 더 잘 이해 한 이후로이 기사를 주셔서 감사합니다.하지만 이제는 "stdint.h"라이브러리를 사용하기 시작해야한다고 생각합니다. c로 프로그래밍 할 때 사용하는 것이 좋습니다. 기억이 소중하고 사용 된 것에주의해야했기 때문에 구식을 배웠습니다.

    1.    크리스ADR

      Katekyo는 없습니다. 표준 라이브러리를 사용하는 것이 확실히 낫습니다. 그러나 uint_least8_t와 uint_fast8_t를 구별하는 것이 무엇인지 아는 것이 더 낫다는 것을 확신 할 수 있습니다. 그리고 그것은 기본 데이터 유형을 아는 것으로 달성됩니다. 댓글과 기사를 읽어 주셔서 감사합니다.

  18.   승리자

    : 또는 대단한 설명! 개념의 일부를 알고 있었지만이 게시물에서 많은 새로운 지식을 얻었습니다.

    1.    크리스ADR

      Victor에게 감사드립니다 🙂 기사가 도움이 될 수 있다는 것이 얼마나 좋은지, 인사

  19.   프로듀서이자 유일한 멤버 인 Guille

    프로그래밍을 더 쉽게하기 위해 Python을 정말 좋아했습니다. http://zetcode.com/gui/pyqt4/ 나는 마지막 테트리스를 좋아했습니다. http://zetcode.com/gui/pyqt4/thetetrisgame/
    나는 여름에이 테트리스를 수정하여 포인트, 멀티 플레이어 및 음악을 조금씩 추가했지만 매우 재미있었습니다.

    1.    크리스ADR

      안녕하세요 Guille, 작업중인 소프트웨어가 조금씩 성장하는 것을 보는 것은 확실히 매우 즐겁습니다. 공유를 위해 🙂

      1.    프로듀서이자 유일한 멤버 인 Guille

        내가 업로드 한 것 (음악의 경우 30Mb) http://guillermo.molleda.com/Tetris9.7z
        각 플레이어에 대해 다른 초기 속도를 구성해야합니다. 또는 새 게임 후 포인트를 다시 시작하는 경우 ... 그리고 내 두 딸이 나와 함께 플레이 할 플레이어가 세 명 있습니다. 심지어 중독성이 있습니다.