Premenné 101: Poznanie vášho počítača

Smutne som videl, že nie veľa sa chce naučiť programovať tento rok 2018 🙁, ale aj keby som si prečítal iba svoje predchádzajúci článok človek a po krátkom čase dokáže vyslať záväzok na bezplatný softvérový projekt, bol by som s mojou prácou spokojný 🙂

Pre tých, ktorí majú radi bezpečnosť, sľubujem, že nasledujúci bude príspevok o bezpečnostných úlohách, takže všetci sú šťastní, ak sa niekto chce dozvedieť niečo iné (napríklad git, správa servera alebo neviem: p), alebo komentovať inú tému na ktoré sa nedá jednoducho odpovedať v poli pre komentáre, dajte mi vedieť a uvidíme, ako to dokážeme vyriešiť 😉

No, teraz, keď ideme na našu vec, predtým sme hovorili o písaní na stroji a že to malo spoločné so spôsobom, akým ukladáme naše premenné do programu, teraz preskúmame trochu toho, čo sa deje vo vnútri, a dúfajme, že to môže byť dosť jasné.

bity

Myslím si, že toto je téma, ktorej sa pri písaní o programovaní vždy dotknem, určite ma niečo fascinuje a pomohlo mi pochopiť veľa vecí, teraz sa pokúsim trochu vysvetliť, aké sú, ako sa čítajú a na čo slúžia 🙂

Myslite na spínač svetla, keď je obvod uzavretý, máme a 0 na obrazovke, keď zmeníme polohu prepínača, pretože a 1🙂 jednoduché nie?

Teraz a 01 môžu znamenať veľa vecí, všetko záleží na kreativite, s akou to berieš, predpokladám, že chcem vedieť, či niekto ide na sever alebo na juh, 1 môže znamenať sever a 0, sur 🙂 povedzme, že chcem vedieť, či je niekto muž alebo žena, 1 môže to byť muž a 0, zena 🙂. Teraz chcem vedieť, či je táto osoba mladá alebo stará (> 22), 0 môže znamenať mladý a 1, vyššie. Poďme si predstavovať ... Máte nejaké domáce zvieratá? 1 Povedal by som, že áno 0 Povedal by som nie Teraz chcem, aby ste si so mnou prečítali nasledujúci riadok:

1001

Toto je krátky spôsob, ako povedať ...

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

čo sa veľmi líši od:

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

Bytes

Poďme teraz o krok ďalej, naučme sa čítať bajty. Bajt je sekvencia 8 bitov, ktoré sa čítajú sprava doľava a každý z nich 1 predstavuje mocnosť 2 povýšený na n kde n je poloha bitu. Pretože to znie ako čínština, dajme malý príklad 🙂

01001011 Máme tento bajt, teraz pôjdeme sprava doľava (<-), dám ich zhora nadol, aby som mohol napísať ich význam:

1: hrot, keď je v polohe 0 naznačuje, že máme nasledujúce 2 zdvihnuté na nulu alebo 2^0. To, o čom vieme, je ekvivalentné 1.

1: druhý bit, teraz poloha 12^1 čo je to isté ako povedať 2

0: tretí bit ... toto by malo byť 2^2, ale keďže nie je zapnutý, necháme ho zapnutý 0

1: štvrtý bit, 2^3 u 8 ????

0: rovnake ako 0

0: iné 0

1: teraz sme v 2^6 o 64

a nakoniec 0 , už vieme, čo to znamená 🙂 teraz pridáme naše výsledky a porovnáme ich s nasledujúcou tabuľkou 🙂 Máme 75 tak to teda poďme hľadať v stĺpci desatinný a uvidíme, čo sa objaví v voz

Výsledok obrázku pre tabuľku ascii

Jedného máme K!! Gratulujeme, už viete, ako čítať v binárnom jazyku 🙂 Ale tí najchytrejší si mohli všimnúť, že sme získali aj desatinné číslo a že má limit (keď sú všetky hodnoty 1) Tento limit sa nachádza v počte 255.

slovo

Teraz mi to povie viac ako jeden, ale čo keď budem potrebovať číslo väčšie ako 255? alebo kde nájdem ďalšie znaky, ako napríklad Japonci? Odpoveď je jednoduchá, poďme spolu 2 bytes. Teraz, keď máme dve, je možný počet kombinácií, ktoré máme 2^16 o 65536 možné výsledky, ako napr 0 je jedným z nich, maximum je 65535. Znie to číslo na zvonček? Pamätáte si maximálny počet portov v systéme linux? Nechávam im domáce úlohy 😉

Dvojslovné a štvorslovné slovo

Pre matematickejšie existujú aj konkrétne formáty, dvojslovo obsahujú, ako si už mnohí predstavovali 2 word o 4 bytes (o 32 bits) informácií, to isté ako povedať:

11111111111111111111111111111111 alebo de 0 a 4 294 967 295

V tomto okamihu sa mnohí budú čudovať, čo sa stane so zápornými číslami, to znamená, že niekde treba uvažovať, nie? Aby bolo možné uložiť záporné číslo, vývojári procesorov sa rozhodli obsadiť prvý bit vľavo ako znamienkovú hodnotu. To znamená, že ak je prvý bit 0 hovoríme o kladnom čísle, ale ak je 1 máme negatívum. Teraz uvidíte, prečo sú bity také špeciálne, že môžu byť akékoľvek, čo chcete 😀

Ale to nám samozrejme ostáva o jednu pozíciu menej na to, aby sme robili násobenie! Takže náš0 a 4 294 967 295 sa stáva:

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

Mnohí z nás to už majú 64 bits, a toto je hodnota a štvorslovo, môžeme mať hodnoty od 0 a 18 446 744 073 709 551 615. To je veľké číslo 🙂

Prečo 8 bit?

Toto sa bude čudovať nejednému, a odpoveď je v hardvéri. Procesory od začiatku potrebovali údaje, aby mohli vykonávať operácie. Dáta sú uložené v pamäti počítača a zakaždým, keď to procesor vyžaduje, použije na ich získanie dátové zbernice. V staroveku mohli tieto zbernice komunikovať maximálne 8 bitov za cyklus, čo znamená, že maximálnym a najefektívnejším spôsobom presunu údajov bolo zoskupenie 8 bitov a ich odoslanie do procesora.

S odstupom času až dodnes vyvinuli procesory schopnosť presunúť 16 bitov, 32 bitov a ... 64 bitov.

Čo to má spoločné so strojopisom?

Teraz sme pri časti, kde to má všetko zmysel 🙂 Písanie je vlastnosť, ktorú programovacie jazyky používajú na pomenovanie týchto pamäťových priestorov. Všetky premenné majú svoj náprotivok v jednom z týchto typov údajov, bez ohľadu na to, ako sa volajú. Tieto sú známe ako primitívne dátové typyKaždý jazyk so silným typom má svoju koncepciu týchto hodnôt a množstva, ktoré predstavuje. Napríklad v C máme knižnicu limits.h čo nám ukazuje maximálne a minimálne množstvo primitívnych hodnôt.

Pozrime sa, čo sa stane, keď sa pokúsime prelomiť jednu z hodnôt:

Vlastné. Christopher Diaz Riveros

Vpravo máme hodnoty súboru limits.h a naľavo sme vzali jednu z týchto hodnôt (unsigned short int) a priradili sme číslo vyššie ako príslušné. Vo výsledku nás kompilátor varuje, že zneužívame pamäť kvôli binárnej forme 66666 sa nemôže zmestiť do binárnej formy súboru 65535. To nás vedie k lekcii v výkon keď programujeme, ak vaša hodnota nebude časom veľmi rásť, alebo ak nepotrebujete hodnoty také veľké ako hodnoty z zdvojnásobiť o štvorslovoPoužitím správneho typu sa zníži množstvo pamäte vyžadovanej procesorom, čo znamená vyššiu rýchlosť načítania údajov, ak je správne vypočítaná.

Na strane tlmočníka je to jednoduchšie vďaka implicitné konverzie. C.keď definujeme premennú v jazykoch ako javascript alebo Python, tlmočník má na starosti pochopenie, o aký typ ide, a pridelenie dostatočného priestoru na pamäť na vykonávanie operácií. Pozrime sa na jednoduchý príklad 🙂

Vlastné. Christopher Diaz Riveros

Ako vidíte, nemusíme tlmočníkovi pythonu vysvetľovať typ našej premennej, pretože má na starosti priradenie typu a jeho uloženie do pamäte 🙂

Poznajte svoje premenné

Závisí to od jazyka a typu implementácie, ktorú budete používať, ale prvým krokom k schopnosti programovať je naučiť sa premenné, ktoré môžete použiť 🙂 Keď pochopíte premenné, budete v pozícii, aby ste ich efektívne a logicky využívali na ukladanie informácií (za predpokladu, používateľom alebo systémom). Toto je prvý krok v rebríčku programovania a dúfame, že po prečítaní tohto článku lepšie pochopíte, ako váš počítač funguje a ako ukladá informácie. Bude so mnou až do nasledujúceho článku. Nezabudnite zanechať svoje komentáre, aby ste zistili, či musíte posilniť alebo komentovať konkrétny bod. Na zdravie


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.

  1.   Luis dijo

    Dobre napísané, stručné a jasné, zároveň zaujímavé pre všetkých divákov. Dobrá práca.

    1.    ChrisADR dijo

      Dakujem pekne, pozdravujem 🙂

  2.   Jána Ježiša dijo

    Skvelé vysvetlenie. Si stroj.

    1.    ChrisADR dijo

      Ďakujem vám

  3.   Ruben dijo

    Veľmi dobre vysvetlené vďaka

    1.    ChrisADR dijo

      Ďakujem vám, že ste si ju prečítali celú 🙂

  4.   Diego dijo

    Výborne, ďakujem za príspevok. A s využitím binárneho problému existuje možnosť, že nám môžete dať triedu IP, podsiete atď. Rozumiem, že nejde o otázku programovania, ale dobré vysvetlenie tejto otázky vždy čakalo.
    Ešte raz ďakujem za vysvetlenie

    1.    ChrisADR dijo

      Ahoj Diego, dá sa to 🙂 pravdu povediac ani ja som sa téme príliš nevenoval, ale neexistuje lepší spôsob vyšetrovania, ako hľadať niečo, o čom by som sa o tom podelil v článku 🙂 Necháme to na zoznam pretože ďalší príspevok už má predmet a bude sa zaoberať otužovaním. Zdravím 🙂

  5.   pedro dijo

    Ste vynikajúci učiteľ a veľmi štedrý pri výučbe toho, čo viete. Gratulujeme a ďakujeme.

    1.    ChrisADR dijo

      Ďakujem pekne Pedro 🙂 Stále hľadám miesta, kde budem učiť, bohužiaľ tu v Peru je ťažké, keď máš iba technický odborný titul, takže teraz sa pozerám na možnosť pokračovať v štúdiu na vysokej škole tu alebo kde môžem alebo dokonca sa prihlás na magisterské štúdium v ​​odbore cudzinec, ktovie, možno sa niečo také čoskoro podá 🙂, ale určite mi učenie robí deň 🙂 pozdravujem

  6.   niečo dijo

    Lepšie vysvetlenie témy som nečítal, prvý príklad je geniálny

    aj keď som toto slovo (ako 16-bitové premenné) nepočul, dvojslovné alebo štvorslovné slovo

    bez ohľadu na to, že „už programujem“, sú príspevky zaujímavé. Ak sa vyskytne problém, v príspevku bude použité C (limity.h) ako príklad premennej veľkosti, C má najmenej špecifickú špecifikáciu, ktorá existuje

    1.    ChrisADR dijo

      Ahojte niečo 🙂 ďakujem pekne, prišiel som s príkladom na ceste 😛 pretože sú to určite známe údaje pre tých, ktorí si prečítali trochu Assembly, a tomu rozumie procesor 🙂 hahaha určite C nie je príliš konkrétny, ale myslím si, že to je. Je to spôsobené tým, že prenosnosť a rôzne architektúry, ktoré podporuje, boli také rozmanité, že C musí vyhovovať každému typu procesora, aby bol skutočne prenosný 🙂
      Zdravím a ďakujem za zdieľanie.

  7.   Sergio dijo

    Pokiaľ by nebolo zaujímavé, keby táto séria tutoriálov vychádzala z rustu, myslím si, že je to jeden z najzaujímavejších jazykov, ktoré sa dnes vyvíjajú.
    Som za ním, ale uznávam, že je to ťažký jazyk, ale s veľkou budúcnosťou ...
    Teším sa na vaše ďalšie články, sú naozaj zaujímavé.
    Zdravím.

    1.    ChrisADR dijo

      Ahoj Sergio, bolo by to určite zaujímavé, počul som, že GNOME plánuje implementovať Rust v rámci svojej sady programov, zatiaľ som nevidel celý jeho rozsah, ale prichádza migrácia.
      Čo sa týka jazykov, osobne sa stále učím C, chcem mať možnosť začať sa na jadre vyvíjať v najbližších mesiacoch a radšej sa naučím niekoľko jazykov do hĺbky, než začnem prehodnocovať nové, ale určite môžem hľadať niečo zaujímavé a urobiť niekoľko príkladov. v Ruste, pretože jeho dokumentácia vyzerá sama o sebe celkom dobre.
      Zdravím a ďakujem za zdieľanie 🙂

  8.   David dijo

    Veľmi dobré vysvetlenie, tak v tomto článku, ako aj v predchádzajúcom. Dúfam, že budete pokračovať v tejto téme, ktorá mi pripadá veľmi zaujímavá.

    1.    ChrisADR dijo

      Ahoj David, tiež dúfam, že budem môcť pokračovať v písaní a hlavne motivovať ľudí, aby sa zapojili do využívania bezplatného softvéru. V súčasnosti existuje toľko projektov a potrieb, že mať niekoľko ďalších rúk na vývoj by bolo skvelé 🙂
      pozdravy

  9.   Mart dijo

    Mohli by ste uverejniť príspevok o Turingovom stroji?

    1.    ChrisADR dijo

      Ahoj Mart 🙂 Myslím si, že v nejakom komentári sme sa toho už dotkli, nie? Som si istý, že dokážem dať dokopy niečo zaujímavé na túto tému 🙂 pozrime sa, čo môže vyjsť. Zdravím a ďakujem za prečítanie všetkých mojich článkov, od prvého dňa až dodnes som vás vždy videla celkom zaujatého 🙂

  10.   ALLAN LARA dijo

    Páni, veľmi pekne ďakujem, aké dobré vysvetlenie.

    pozdravy

    1.    ChrisADR dijo

      Ďakujem pekne Allan 🙂 s pozdravom

  11.   ramon hidalgo dijo

    Čítal som váš predchádzajúci príspevok! Ďakujem pekne za vysvetlenie, aj keď si myslím, že tomu slovu nikdy nedokončím.

    1.    ChrisADR dijo

      Ahoj Ramon 🙂 velmi pekne dakujem za precitanie oboch. Ak je to „slovo“ akékoľvek, potom „slovo“ predstavuje vývoj bajtu, je to ako s procesormi, predtým ako existovalo 8 bitov, po 16 bitoch atď. Je to tak preto, lebo zakaždým, keď potrebujeme viac priestoru, proces a lepšia rýchlosť alebo výkon ... „slovo“ sa zrodilo, pretože priestor „bajtu“ bol krátky a to isté platí pre slovo „dvojitý“ a „štvorcový“ 🙂 je to prirodzený vývoj, ktorý nás núti pridať výkon a priestor na ďalší vývoj 🙂

      pozdravy

  12.   Anonymný dijo

    Tento rok 2018 sa učím programovať áno alebo áno, ďakujem

    1.    ChrisADR dijo

      Som rada 🙂 snaz sa !! S pozdravom

  13.   Účet dijo

    Ďakujem pekne, len tak ďalej. Už viem programovať, ale čakám na vaše učenie, že moje programovanie pre samoukov je plné zlých postupov.

    1.    ChrisADR dijo

      Ďakujem Guillermo 🙂 No dúfam, že nájdete zaujímavé veci aj v nasledujúcich príspevkoch 🙂 Zdravím

  14.   Edgar dijo

    Jednoduché vysvetlenie je vždy najlepšie .. vynikajúce ..
    Navrhoval by som git ... pre programátorov je to základné, keď chcete pracovať ako tím a dať si do poriadku prácu .. verzie ..

    1.    ChrisADR dijo

      Veľmi pravdivý Edgar, pokúsim sa o ňom uverejniť obsah, aj keď je dosť ťažké povedať niečo nové, pretože dokumentácia git je už teraz bohatá a niekoľko vecí je už preložených do niekoľkých jazykov. Uvidím, čo môžem urobiť, pozdravy a poďakovanie za zdieľanie

  15.   tiririri dijo

    Dobrý deň, zodpovedá číslo od 0 do 18 446 744 073 709 551 615 64-bitovej desatinnej hodnote alebo odkazuje na inú hodnotu? Pri výpočte výkonu 2 ^ 64 bude výsledok, ktorý dostanem,: 18 446 744 073 709 552 000.

    1.    ChrisADR dijo

      Ahoj Tiririri, myslím, že máš problém so zaokrúhľovaním, môžeš skúsiť použiť príkaz bc? je programovací jazyk navrhnutý tak, aby bol čo najpresnejší, stačí ak do neho vstúpite 2^64, mozno to vyriesi 🙂 daj vediet ako to prebiehalo, zdravim

      . Skutočná hodnota je 18 446 744 073 709 551 616, ale odčítame 1, pretože 0 sa počíta ako možná hodnota 🙂

      1.    tiririri dijo

        Vďaka, vypočítal som to pomocou kalkulačky výkonu, ktorú som našiel na internete (https://es.calcuworld.com/calculadoras-matematicas/potencias/) a to bol výsledok, ktorý mi dal.
        A áno, už som vyskúšal príkaz bc a účinne mi dáva hodnotu, ktorú ste si zapísali.

  16.   tiririri dijo

    Ahojte znova, obrazok, na ktorý odkazujete na knižnicu limits.h, je veľmi malý a nedá sa prečítať (aspoň som si ho nemohol prečítať, pretože vidím, že to urobil každý, zdá sa), a keďže mu nerozumiem Už nepokračujem v čítaní. Neviem, či by si to mohla zmeniť, dúfam, že som ťa tým neobťažovala.

    1.    ChrisADR dijo

      Môžete vyskúšať mobilnú verziu, tie vyzerajú trochu prehľadnejšie, je to téma wordpressu: / na druhej strane všetky hlavičky C nájdete v / usr / include /, v tomto prípade si môžete zvoliť priame čítanie, ak je to jednoduchšie 🙂 skúsim nahrať väčší obrázok, či to pomôže 🙂

      1.    tiririri dijo

        Ďakujem, myslím si, že by som s tým mal byť trpezlivý, heh heh.

  17.   Katekyo dijo

    Ďakujem za článok, pretože som teraz trochu lepšie pochopil premenné a rozsah zastúpenia jazyka a teraz si myslím, že by som mal začať používať knižnicu „stdint.h“, pretože ju odporúčajú používať pri programovaní vc, pretože som mal bola učená stará škola, pretože pamäť bola vzácna a človek musel byť opatrný s tým, čo sa používalo

    1.    ChrisADR dijo

      Pre Katekyo nie je dôvod, určite je lepšie použiť štandardnú knižnicu, ale môžem vás ubezpečiť, že je lepšie vedieť, čo odlišuje uint_least8_t od uint_fast8_t, a to sa dá dosiahnuť poznaním primitívnych dátových typov, čo bolo cieľom príspevku 🙂 Veľká vďaka za komentár a za prečítanie článku, pozdravy

  18.   víťaz dijo

    : Alebo majstrovské vysvetlenie! Časť konceptov som poznal, ale z tohto príspevku čerpám veľa nových poznatkov

    1.    ChrisADR dijo

      Dakujem pekne Victor 🙂 ako dobre, ze ten clanok moze pomoct, zdravim

  19.   Guille dijo

    Python sa mi veľmi páčil, aby som uľahčil programovanie, videl som kurz v http://zetcode.com/gui/pyqt4/ Miloval som posledný tetris o: http://zetcode.com/gui/pyqt4/thetetrisgame/
    Tento tetris som počas leta vyretušoval, aby som dal body, hru pre viacerých hráčov a hudbu, kúsok po kúsku, ale veľmi zábavnú.

    1.    ChrisADR dijo

      Dobrý deň Guille, je určite veľmi zábavné vidieť, ako softvér, na ktorom pracujete, rastie kúsok po kúsku 🙂 je to neporovnateľná skúsenosť a ešte viac, keď niekomu pripadá to, čo vyvíjate, užitočné, teda z iného sveta 😀 ďakujem pekne na zdieľanie 🙂

      1.    Guille dijo

        Ten, ktorý som urobil, som nahral (30 MB pre hudbu) http://guillermo.molleda.com/Tetris9.7z
        Musíte nakonfigurovať inú počiatočnú rýchlosť pre každého hráča alebo ak reštartujete body po novej hre ... a moje dve dcéry si so mnou môžu zahrať traja hráči. Je dokonca návyková.