Variabile 101: Cunoașterea computerului

Din păcate, am văzut că nu mulți vor să învețe să programeze acest 2018, dar chiar dacă aș fi citit-o doar pe a mea anterioară articol o persoană și după puțin timp este în măsură să trimită un angajament la un proiect de software gratuit, aș fi mulțumit de munca mea 🙂

Pentru cei care iubesc securitatea, vă promit că următoarele vor fi o postare despre securitate 🙂 așa că toată lumea este fericită, dacă cineva vrea să învețe altceva (cum ar fi git, administrarea serverului sau ce știu: p), sau să comenteze despre un alt subiect la care nu se poate răspunde într-un mod simplu în caseta de comentarii, anunțați-mă și vedem cum o putem lucra 😉

Ei bine, acum, dacă mergem la treaba noastră, anterior am vorbit despre tastare și că acest lucru are legătură cu modul în care salvăm variabilele noastre într-un program, acum vom revedea puțin din ceea ce se întâmplă în interior și sperăm că poate fi Destul de clar.

biţi

Cred că acesta este un subiect pe care îl ating mereu când scriu despre programare, este cu siguranță ceva care mă fascinează și care m-a ajutat să înțeleg multe lucruri, acum voi încerca să explic puțin cum sunt, cum sunt citite și la ce servesc 🙂

Gândiți-vă la un întrerupător de lumină, când circuitul este închis, avem un 0 pe ecran, când schimbăm poziția comutatorului, deoarece a 1🙂 simplu nu-i așa?

Acum un 0 și o 1 Ele pot însemna multe lucruri, totul depinde de creativitatea cu care o luați, să presupun că vreau să știu dacă cineva se îndreaptă spre nord sau sud, 1 poate însemna nord și 0, sur 🙂 să spunem că vreau să știu dacă cineva este bărbat sau femeie, 1 poate fi un bărbat și 0, femeie 🙂. Acum vreau să știu dacă această persoană este tânără sau bătrână (> 22), 0 poate însemna tânăr și 1, mai sus. Să ne imaginăm în continuare ... Aveți animale de companie? 1 Aș spune că da, în timp ce 0 Aș spune că nu Acum vreau să citiți următorul rând cu mine:

1001

Aceasta este modalitatea scurtă de a spune ...

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

care este foarte diferit de:

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

Bytes

Acum hai să facem un pas mai departe, să învățăm cum să citim octeți. Un octet este secvența de 8 biți, care se citesc de la dreapta la stânga și fiecare 1 reprezintă o putere a 2 ridicat la n unde n este poziția bitului. Deoarece sună chinezesc, să punem un mic exemplu 🙂

01001011 Avem acest octet, acum vom merge de la dreapta la stânga (<-) Am să le pun de sus în jos pentru a putea scrie semnificația lor:

1: bitul în poziție 0 indică faptul că avem următoarele 2 ridicate la zero sau 2^0. Această fântână pe care o știm este echivalentă cu 1.

1: al doilea bit, acum poziția 12^1 ceea ce este la fel ca a spune 2

0: al treilea bit ... ar trebui să fie 2^2, dar din moment ce nu este activat, să-l lăsăm pornit 0

1: al patrulea bit, 2^3 u 8 ????

0: la fel ca 0

0: alte 0

1: acum suntem în 2^6 o 64

și în cele din urmă 0 , știm deja ce înseamnă 🙂 acum vom adăuga rezultatele noastre și le vom compara cu tabelul următor 🙂 Avem un 75 deci să o căutăm în coloană Zecimal și vom vedea ce apare în Mangal

Rezultatul imaginii pentru tabelul ascii

Avem una K!! Felicitări, știi deja cum să citești în binar 🙂 Dar cei mai săpători au observat că am obținut și un număr zecimal și că are o limită (când toate valorile sunt 1) Această limită se găsește în număr 255.

Cuvânt

Acum îmi vor spune mai mulți, dar dacă am nevoie de un număr mai mare decât 255? sau unde pot găsi alte personaje precum japonezii? Ei bine, răspunsul este simplu, să punem împreună 2 bytes. Acum că avem două, numărul posibil de combinații pe care îl avem este 2^16 o 65536 rezultate posibile, cum ar fi 0 este una dintre acestea, maximul posibil este 65535. Numărul ăsta sună la cineva? Vă amintiți numărul maxim de porturi pe un sistem Linux? Le las temele home

Cuvânt dublu și cuvânt quad

Pentru mai matematic există și formate specifice, cuvânt dublu conține, așa cum s-ar fi putut imagina deja mulți 2 word o 4 bytes (o 32 bits) de informații, la fel ca a spune:

11111111111111111111111111111111 la 0 a 4 294 967 295

În acest moment mulți se vor întreba ce se întâmplă cu numerele negative, adică undeva trebuie contemplate, nu? Pentru a putea stoca un număr negativ, dezvoltatorii procesorului au ales să ocupe primul bit din stânga ca valoare de semn. Aceasta înseamnă că dacă primul bit este 0 vorbim despre un număr pozitiv, dar dacă este 1 avem un negativ. Acum vedeți de ce biții sunt atât de speciali, încât pot fi orice doriți 😀

Dar acest lucru ne lasă, evident, cu o poziție mai mică de a face multiplicarea! Deci a noastră0 a 4 294 967 295 devine:

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

Acum, mulți dintre noi avem deja 64 bits, și aceasta este valoarea unui cuvânt quad, putem avea valori de la 0 a 18 446 744 073 709 551 615. Acesta este un număr mare 🙂

De ce 8 biți?

Acesta este ceva la care mai mulți se vor întreba, iar răspunsul este în hardware. De la început, procesatorii au avut nevoie de date pentru a putea efectua operațiuni. Datele sunt stocate în memoria computerului și de fiecare dată când procesorul le cere, folosește autobuzele de date pentru a le obține. În cele mai vechi timpuri, aceste autobuze puteau comunica maximum 8 biți pe ciclu, ceea ce înseamnă că cel mai eficient și cel mai eficient mod de a muta date, era gruparea a 8 biți și trimiterea lor către procesor.

Odată cu trecerea timpului, până astăzi, procesoarele au dezvoltat capacitatea de a muta 16 biți, 32 biți și ... 64 biți.

Ce legătură are cu tastarea?

Acum suntem în partea în care totul are sens 🙂 Tastarea este o proprietate pe care limbajele de programare o folosesc pentru a denumi aceste spații de memorie. Toate variabilele își au corespondența într-unul dintre aceste tipuri de date, indiferent cum se numesc. Acestea sunt cunoscute sub numele de tipuri de date primitiveFiecare limbaj puternic tastat are concepția sa despre aceste valori și cantitatea pe care o reprezintă. De exemplu, în C avem biblioteca limits.h ceea ce ne arată cantitatea maximă și minimă de valori primitive.

Să vedem ce se întâmplă dacă încercăm să spargem una dintre valori:

Proprie. Christopher Diaz Riveros

În dreapta avem valorile fișierului limits.h iar în stânga am luat una dintre aceste valori (unsigned short int) și am atribuit un număr mai mare decât cel corespunzător. Ca urmare, compilatorul ne avertizează că folosim greșit memoria, deoarece forma binară a 66666 nu se poate încadra în forma binară a 65535. Acest lucru ne conduce la o lecție în performanță atunci când programăm, dacă valoarea dvs. nu va crește mult în timp sau dacă nu aveți nevoie de valori la fel de mari ca cele ale unui dubla o cuvânt quadFolosirea tipului corect reduce cantitatea de memorie solicitată de CPU, ceea ce implică o viteză mai mare de recuperare a datelor dacă este bine calculată.

Din partea interpretului, acest lucru este mai ușor datorită conversii implicite. CCând definim o variabilă în limbi precum javascript sau Python, interpretul este responsabil de înțelegerea tipului și alocarea spațiului de memorie suficient pentru a efectua operațiile. Să vedem un exemplu simplu 🙂

Proprie. Christopher Diaz Riveros

După cum puteți vedea, nu trebuie să explicăm interpretului python tipul variabilei noastre, deoarece este însărcinată cu atribuirea unui tip și stocarea acestuia în memorie 🙂

Cunoaște-ți variabilele

Acest lucru depinde de limbajul și tipul de implementare pe care urmează să îl utilizați, dar primul pas pentru a putea programa este să învățați variabilele pe care le puteți utiliza 🙂 Odată ce ați înțeles variabilele, veți fi în măsură să le puteți utiliza eficient și logic pentru a stoca informațiile (furnizate de către un utilizator sau de sistem). Acesta este primul pas pe scara de programare și, sperăm, după ce ați citit acest articol, veți avea o mai bună înțelegere a modului în care funcționează computerul și modul în care stochează informații. Va fi cu mine până la următorul articol, nu uitați să lăsați comentariile dvs. pentru a vedea dacă trebuie să vă întăriți sau să comentați vreun punct anume. Noroc


Conținutul articolului respectă principiile noastre de etică editorială. Pentru a raporta o eroare, faceți clic pe aici.

41 comentarii, lasă-le pe ale tale

Lasă comentariul tău

Adresa ta de email nu va fi publicată.

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Luis el a spus

    Bine scris, succint și clar, în același timp interesant pentru toate publicurile. Buna treaba.

    1.    ChrisADR el a spus

      Vă mulțumesc foarte mult, salutări 🙂

  2.   Ioan Iisus el a spus

    Explicație grozavă. Ești o mașină.

    1.    ChrisADR el a spus

      Mulțumesc

  3.   Ruben el a spus

    Foarte bine explicat mulțumesc

    1.    ChrisADR el a spus

      Vă mulțumesc că l-ați citit integral 🙂

  4.   Diego el a spus

    Excelent, mulțumesc pentru contribuție. Și profitând de problema binară, există posibilitatea să ne oferiți o clasă de IP, subrețea etc. Înțeleg că nu este o problemă de programare, dar o explicație bună a acestei probleme a fost întotdeauna în așteptare.
    Din nou, mulțumesc pentru explicație

    1.    ChrisADR el a spus

      Bună ziua Diego, se poate face 🙂 să spun adevărul Nici eu nu am intrat prea mult în subiect, dar nu există o modalitate mai bună de a investiga decât căutând ceva de împărtășit despre asta într-un articol 🙂 O vom lăsa pentru listă pentru că următoarea postare are deja un subiect și se va ocupa de întărire. Salutări 🙂

  5.   Peter el a spus

    Ești un profesor excelent și foarte generos pentru a preda ceea ce știi. Felicitări și mulțumesc.

    1.    ChrisADR el a spus

      Mulțumesc foarte mult Pedro 🙂 Încă caut locuri de predat, din păcate aici, în Peru, este dificil când ai doar o diplomă profesională tehnică, așa că acum mă uit la posibilitatea de a-mi continua studiile universitare aici sau unde pot sau aplică chiar și la un masterat străinul, care știe, poate că așa ceva se va da în curând 🙂 dar cu siguranță predarea este ceva care îmi face ziua 🙂 Salutări

  6.   ceva el a spus

    Nu citisem o explicație mai bună a subiectului, primul exemplu este genial

    deși nu auzisem acel cuvânt (cum ar fi variabilele pe 16 biți), cuvânt dublu sau cuvânt quad

    indiferent că „programez deja”, postările sunt interesante. Dacă există vreo problemă, postarea este să folosească C (limits.h) ca exemplu al dimensiunilor variabilei, C are cea mai mică specificație specifică care există

    1.    ChrisADR el a spus

      Bună ziua ceva 🙂 mulțumesc foarte mult, am venit cu exemplul pe drum 😛 pentru că este cu siguranță date cunoscute pentru cei care au citit un pic de Asamblare, și asta este ceea ce înțelege procesorul 🙂 hahaha cu siguranță C nu este foarte specific, dar cred că se datorează faptului că portabilitatea și diferitele arhitecturi pe care le suportă au fost atât de variate încât C trebuie să acomodeze fiecare tip de procesor pentru a fi cu adevărat portabil
      Salutări și mulțumiri pentru distribuire.

  7.   Sergio el a spus

    Dacă nu ar fi interesant dacă această serie de tutoriale s-ar baza pe rugină, cred că este unul dintre cele mai interesante limbaje care se dezvoltă astăzi.
    Sunt în spatele lui, dar recunosc că este un limbaj dificil, dar cu un viitor minunat ...
    Aștept cu nerăbdare următoarele articole, sunt cu adevărat interesante.
    Salutări.

    1.    ChrisADR el a spus

      Bună ziua Sergio, ar fi cu siguranță interesant, am auzit că GNOME intenționează să implementeze Rust în cadrul suitei sale de programe, nu am văzut încă domeniul de aplicare pe care îl intenționează, dar urmează o migrare.
      În ceea ce privește limbile, personal învăț încă C, vreau să pot începe să mă dezvolt în nucleu în următoarele câteva luni și prefer să învăț câteva limbi în profunzime înainte de a începe să revizuiesc altele noi, dar cu siguranță pot căuta ceva interesant și pot face câteva exemple în Rust, deoarece documentația sa arată destul de bine singură.
      Salutări și mulțumiri pentru distribuire 🙂

  8.   David el a spus

    Explicații foarte bune, atât în ​​acest articol, cât și în cel anterior. Sper să continuați cu această temă care mi se pare foarte interesantă.

    1.    ChrisADR el a spus

      Bună ziua David, sper, de asemenea, să continui să scriu și mai ales să îi motivez pe oameni să participe cu software-ul gratuit, există atât de multe proiecte și nevoi acum că a avea câteva mâini în plus de dezvoltat ar fi minunat 🙂
      În ceea ce priveşte

  9.   Mart el a spus

    Ați putea face o postare despre mașina Turing?

    1.    ChrisADR el a spus

      Bună Mart, cred că în unele comentarii am mai atins-o, nu? Sunt sigur că pot pune laolaltă ceva interesant pe subiect. Să vedem ce poate ieși. Salutări și mulțumiri pentru citirea tuturor articolelor mele, din prima zi până astăzi te-am văzut întotdeauna destul de interesat 🙂

  10.   ALLAN LARA el a spus

    Uau, mulțumesc foarte mult ce explicație bună.

    În ceea ce priveşte

    1.    ChrisADR el a spus

      Vă mulțumesc frumos Allan 🙂

  11.   Ramon Hidalgo el a spus

    Am citit postarea ta anterioară! Vă mulțumesc foarte mult pentru explicație, deși cred că nu voi termina niciodată să înțeleg cuvântul.

    1.    ChrisADR el a spus

      Bună Ramon 🙂 Vă mulțumesc foarte mult pentru că ați citit amândouă Dacă este de vreun folos, „cuvântul” este evoluția unui octet, este ca procesoarele, înainte erau 8 biți, după 16 biți etc ... asta pentru că de fiecare dată avem nevoie de mai mult spațiu pentru procesare și viteză sau putere mai bună ... „cuvântul” s-a născut pentru că spațiul „octetului” a scăzut, la fel și cu cuvântul „dublu” și „quad” 🙂 evoluția naturală ne face să adăugăm putere și spațiu pentru a continua dezvoltarea 🙂

      În ceea ce priveşte

  12.   anonim el a spus

    În acest 2018 învăț să programez da sau da, mulțumesc

    1.    ChrisADR el a spus

      Mă bucur 🙂 încearcă din greu !! Salutari

  13.   Guillermo el a spus

    Vă mulțumesc foarte mult, continuați. Știu deja cum să programez, dar aștept învățăturile voastre, că programarea mea autodidactă este plină de rele practici.

    1.    ChrisADR el a spus

      Mulțumesc Guillermo 🙂 Ei bine, sper că veți găsi lucruri interesante și în următoarele postări ings Salutări

  14.   Edgar el a spus

    O explicație simplă este întotdeauna cea mai bună .. excelent ..
    Aș propune git ... pentru programatori este de bază atunci când vrei să lucrezi în echipă și să-ți pui munca în ordine .. versiunile ..

    1.    ChrisADR el a spus

      Foarte adevărat Edgar, voi încerca să postez conținut despre asta, deși este destul de dificil să spun ceva nou, deoarece documentația git este deja abundentă și mai multe lucruri sunt deja traduse în mai multe limbi. Voi vedea ce pot face, salutări și mulțumiri pentru distribuire

  15.   Tiririri el a spus

    Bună ziua, numărul de la 0 la 18 446 744 073 709 551 615 corespunde cu valoarea zecimală pe 64 de biți sau se referă la o altă valoare? Ei bine, calculând puterea de 2 ^ 64, rezultatul pe care îl obțin este: 18 446 744 073 709 552.

    1.    ChrisADR el a spus

      Bună Tiririri, cred că aveți o problemă de rotunjire, puteți încerca să utilizați comanda bc? este un limbaj de programare conceput pentru a fi cât mai precis posibil, odată ce se află în el, trebuie doar să faceți 2^64Poate asta o va rezolva 🙂 anunță-mă cum a mers, salutări

      . Valoarea reală este 18 446 744 073 709 551 616, dar scădem 1 deoarece 0 contează ca valoare posibilă 🙂

      1.    Tiririri el a spus

        Mulțumesc, am calculat asta cu un calculator de putere pe care l-am găsit pe net (https://es.calcuworld.com/calculadoras-matematicas/potencias/) și acesta a fost rezultatul pe care mi l-a dat.
        Și da, am încercat deja comanda bc și îmi dă efectiv valoarea pe care ați notat-o.

  16.   Tiririri el a spus

    Bună ziua, imaginea în care faceți referire la biblioteca limit.h este foarte mică și nu poate fi citită (cel puțin nu am putut să o citesc, pentru că văd că toată lumea a făcut-o, se pare) și, din moment ce nu o înțeleg Nu mai citesc în continuare. Nu știu dacă ai putea să-l schimbi, sper că nu te-am deranjat cu asta.

    1.    ChrisADR el a spus

      Puteți încerca versiunea mobilă, acestea arată puțin mai clare, este o temă wordpress: / pe de altă parte, toate anteturile C pot fi găsite în / usr / include /, în acest caz puteți alege să o citiți direct dacă este mai ușor 🙂 Voi încerca să încărc o imagine mai mare pentru a vedea dacă ajută 🙂

      1.    Tiririri el a spus

        Mulțumesc, cred că ar trebui să am răbdare cu asta, heh heh.

  17.   Katekyo el a spus

    Vă mulțumim pentru articol, deoarece acum am înțeles un pic mai bine variabilele și gama de reprezentare a unui limbaj și acum cred că ar trebui să încep să folosesc biblioteca „stdint.h”, deoarece ei recomandă să se folosească la programarea în c, de când am avut a fost învățat vechea școală, deoarece memoria era prețioasă și trebuia să fii atent cu ceea ce era folosit

    1.    ChrisADR el a spus

      Nu există niciun motiv pentru Katekyo, este cu siguranță mai bine să folosiți biblioteca standard, dar vă pot asigura că este mai bine să știți ce distinge un uint_least8_t de un uint_fast8_t și care se realizează prin cunoașterea tipurilor de date primitive, care a fost scopul al postării 🙂 Multe mulțumiri pentru comentariu și pentru citirea articolului, salutări

  18.   învingător el a spus

    : Sau o explicație magistrală! Știam o parte din concepte, dar obțin multe cunoștințe noi din acest post

    1.    ChrisADR el a spus

      Mulțumesc mult Victor 🙂 ce bine că articolul poate fi de ajutor, salutări

  19.   Guille el a spus

    Mi-a plăcut foarte mult Python pentru a face programarea mai ușoară, am văzut un curs în http://zetcode.com/gui/pyqt4/ Mi-a plăcut tetrisul final al: http://zetcode.com/gui/pyqt4/thetetrisgame/
    Am retus acest tetris în timpul unei veri pentru a pune puncte, multiplayer și muzică, încetul cu încetul, dar foarte distractiv.

    1.    ChrisADR el a spus

      Bună ziua Guille, este cu siguranță foarte distractiv să vezi software-ul la care lucrezi să crească încetul cu încetul 🙂 este o experiență incomparabilă și cu atât mai mult când cineva consideră util ceea ce dezvolți, adică din altă lume 😀 mulțumesc foarte mult pentru partajare 🙂

      1.    Guille el a spus

        Pe cel pe care l-am făcut l-am încărcat (30Mb pentru muzică) http://guillermo.molleda.com/Tetris9.7z
        Trebuie să configurați o viteză inițială diferită pentru fiecare jucător sau dacă reporniți puncte după un joc nou, ... și există trei jucători pentru ca cele două fiice ale mele să joace cu mine. Este chiar captivant.

bool (adevărat)