Varijable 101: Poznavanje računara

Nažalost, vidio sam da malo ljudi želi naučiti programirati ovu 2018. godinu, ali čak i da sam samo pročitao svoj prethodni članak osoba i nakon malo vremena bude mogla poslati obavezu na projekt besplatnog softvera, bio bih zadovoljan svojim radom 🙂

Za one koji vole sigurnost, obećavam vam da će sljedeće biti post o sigurnosnim zadacima, tako da su svi sretni ako neko želi naučiti nešto drugo (poput gita, administriranje servera ili ne znam: p) ili da komentiraju neku drugu temu na koji se ne može lako odgovoriti u okviru za komentare, javite mi i možemo vidjeti kako to možemo raditi 😉

Pa, ako idemo na našu stvar, ranije smo razgovarali o tipkanju i da je to povezano s načinom na koji spremamo naše varijable u program, sada ćemo pregledati malo onoga što se događa unutra i nadamo se da to može dovoljno jasno.

bits

Mislim da je ovo tema koje se uvijek dotičem kada pišem o programiranju, to je sigurno nešto što me fascinira i što mi je pomoglo da razumijem mnoge stvari, sada ću pokušati objasniti malo kako su, kako se čitaju i čemu služe 🙂

Zamislite prekidač za svjetlo, kad je krug zatvoren, imamo a 0 na ekranu, kada promijenimo položaj prekidača, jer a 1🙂 jednostavno zar ne?

Sada a 0 i a 1 Oni mogu značiti mnogo stvari, sve ovisi o kreativnosti s kojom ga poduzimate, pretpostavimo da želim znati ide li netko na sjever ili jug, 1 može značiti sjever i 0, sur 🙂 recimo da želim znati je li neko muškarac ili žena, 1 može biti muškarac i 0, žena 🙂. Sada želim znati je li ta osoba mlada ili stara (> 22), 0 može značiti mlad i 1, više. Nastavimo maštati ... Imate li kućnih ljubimaca? 1 Rekao bih da da, dok 0 Rekao bih ne Sada želim da pročitate sljedeći red sa mnom:

1001

Ovo je kratak način da kažem ...

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

što se vrlo razlikuje od:

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

Bytes

Idemo sada korak dalje, naučimo kako čitati bajtove. Bajt je niz od 8 bitova, koji se čitaju zdesna nalijevo i svaki 1 predstavlja moć 2 podignuta na n gdje n je položaj bita. Kako zvuči kao kineski, stavimo mali primjer 🙂

01001011 Imamo ovaj bajt, sada ćemo ići s desna na lijevo (<-) Stavit ću ih odozgo prema dolje kako bih mogao napisati njihovo značenje:

1: bit u položaju 0 označava da imamo sljedeća 2 podignuta na nulu ili 2^0. Ovo dobro što znamo je ekvivalentno 1.

1: drugi bit, sada položaj 12^1 što je isto što i reći 2

0: treći bit ... ovo bi trebalo biti 2^2, ali budući da nije uključen, ostavit ćemo ga uključenim 0

1: četvrti bit, 2^3 u 8 🙂

0: isto kao 0

0: ostalo 0

1: sada smo unutra 2^6 o 64

i konačno 0 , mi već znamo što to znači 🙂 sada ćemo dodati naše rezultate i usporediti ih sa sljedećom tablicom 🙂 imamo 75 pa potražimo to u koloni Decimalno i vidjet ćemo šta se pojavljuje u char

Rezultat slike za ascii tablicu

Imamo jednog K!! Čestitam, već znate kako čitati u binarnom obliku 🙂 Ali najpametniji su možda primijetili da smo dobili i decimalni broj i da ima ograničenje (kada su sve vrijednosti 1) To ograničenje se nalazi u broju 255.

riječ

Sad će mi reći više od jednog, ali što ako trebam broj veći od 255? ili gdje mogu naći druge likove poput Japanaca? Pa, odgovor je jednostavan, spojimo 2 bytes. Sad kad imamo dvije, mogući broj kombinacija koje imamo je 2^16 o 65536 mogući ishodi, kao što su 0 je jedan od tih, maksimum mogućih je 65535. Zvoni li nekome taj broj? Sjećate se maksimalnog broja portova na linux sistemu? Ostavljam im domaće zadatke 😉

Dvostruka riječ i četverokut

Za matematičkije postoje i specifični formati, dvostruka riječ sadrže, kao što su mnogi već mogli zamisliti 2 word o 4 bytes (o 32 bits) informacija, isto što i reći:

11111111111111111111111111111111 ili od 0 a 4 294 967 295

U ovom trenutku mnogi će se zapitati što se događa s negativnim brojevima, to jest negdje o kojima se mora razmišljati, zar ne? Da bi mogli pohraniti negativan broj, programeri procesora odlučili su zauzeti prvi bit s lijeve strane kao vrijednost znaka. To znači da ako je prvi bit 0 govorimo o pozitivnom broju, ali ako jeste 1 imamo negativan. Sada pogledajte zašto su bitovi tako posebni, mogu biti što god želite want

Ali ovo nam očito ostavlja jednu poziciju manje za množenje! Dakle naš0 a 4 294 967 295 postaje:

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

Mnogi od nas već jesu 64 bits, a ovo je vrijednost a quad word, možemo imati vrijednosti u rasponu od 0 a 18 446 744 073 709 551 615. To je velik broj 🙂

Zašto 8 bit?

To se nešto što se možda pita, a odgovor je u hardveru. Od početka su procesorima potrebni podaci da bi mogli izvoditi operacije. Podaci se pohranjuju u memoriju računara i svaki put kad ih procesor zahtijeva, koristi se sabirnicama podataka da ih dobije. U davna vremena ove sabirnice mogle su komunicirati najviše 8 bita po ciklusu, što znači da je maksimalni i najefikasniji način premještanja podataka bio grupiranje 8 bita i njihovo slanje u procesor.

S vremenom, do danas, procesori su razvili sposobnost pomicanja 16 bita, 32 bita i ... 64 bita.

Kakve to veze ima s tipkanjem?

Sad smo u dijelu u kojem sve to ima smisla 🙂 Kucanje je svojstvo koje programski jezici koriste za imenovanje ovih memorijskih prostora. Sve varijable imaju svoj pandan u jednoj od ovih vrsta podataka, bez obzira kako se zvale. Oni su poznati kao primitivni tipovi podatakaSvaki jako otkucani jezik ima svoje poimanje ovih vrijednosti i količine koju one predstavljaju. Na primjer, u C imamo biblioteku limits.h što nam pokazuje maksimalnu i minimalnu količinu primitivnih vrijednosti.

Pogledajmo što će se dogoditi ako pokušamo razbiti jednu od vrijednosti:

Svoje. Christopher Diaz Riveros

S desne strane imamo vrijednosti datoteke limits.h i s lijeve strane uzeli smo jednu od ovih vrijednosti (unsigned short int) i dodijelili smo broj veći od odgovarajućeg. Kao rezultat toga, kompajler nas upozorava da zloupotrebljavamo memoriju zbog binarnog oblika 66666 ne može se uklopiti u binarni oblik 65535. To nas vodi do lekcije iz performanse kada programiramo, ako vaša vrijednost neće rasti puno s vremenom ili ako vam nisu potrebne vrijednosti velike kao vrijednosti dvostruko o quad wordUpotreba ispravnog tipa smanjuje količinu memorije koju CPU zahtijeva, što podrazumijeva veću brzinu dohvata podataka ako je dobro proračunata.

Na strani tumača to je lakše zbog implicitne konverzije. Conda definiramo varijablu na jezicima kao što su javascript ili Python, tumač je zadužen da razumije koji je to tip i dodjeljuje dovoljno memorijskog prostora za izvođenje operacija. Pogledajmo jednostavan primjer 🙂

Svoje. Christopher Diaz Riveros

Kao što vidite, ne moramo tumaču pythona objašnjavati tip naše varijable, jer je ona zadužena za dodjeljivanje tipa i njegovo spremanje u memoriju 🙂

Znajte svoje varijable

To ovisi o jeziku i vrsti implementacije koju ćete koristiti, ali prvi korak da biste mogli programirati je naučiti varijable koje možete koristiti 🙂 Jednom kad shvatite varijable, bit ćete u mogućnosti da ih učinkovito i logično koristite za pohranu podataka (pod uvjetom od strane korisnika ili sistema). Ovo je prvi korak na programskoj ljestvici i nadamo se da ćete nakon čitanja ovog članka bolje razumjeti kako vaše računalo radi i kako čuva informacije. Biće sa mnom do sljedećeg članka, ne zaboravite ostaviti komentare da biste vidjeli trebate li pojačati ili komentirati bilo koju konkretnu točku. Živjeli


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.

  1.   luis rekao je

    Dobro napisano, sažeto i jasno, istovremeno zanimljivo za svu publiku. Dobar posao.

    1.    ChrisADR rekao je

      Puno vam hvala, pozdrav 🙂

  2.   John Jesus rekao je

    Sjajno objašnjenje. Ti si mašina.

    1.    ChrisADR rekao je

      Hvala

  3.   Ruben rekao je

    Vrlo dobro objašnjeno hvala

    1.    ChrisADR rekao je

      Hvala vam što ste je pročitali u cijelosti 🙂

  4.   Diego rekao je

    Izvrsno, hvala na unosu. A iskorištavanjem binarnog problema postoji mogućnost da nam date klasu IP-a, podmreže itd. Razumijem da to nije programsko pitanje, ali dobro objašnjenje tog problema je uvijek bilo na čekanju.
    Još jednom, hvala na vašem objašnjenju

    1.    ChrisADR rekao je

      Pozdrav Diego, to se može učiniti 🙂 da kažem istinu, ni ja nisam puno ulazio u tu temu, ali nema boljeg načina za istragu od traženja nečega o tome u članku 🙂 Ostavit ćemo to na listi jer sljedeći post već ima temu i bavit će se otvrdnjavanjem. Pozdrav 🙂

  5.   pedro rekao je

    Vi ste izvrstan učitelj i vrlo ste velikodušni za podučavanje onoga što znate. Čestitam i hvala.

    1.    ChrisADR rekao je

      Puno vam hvala, Pedro. Još uvijek tražim mjesta za predavanje, nažalost ovdje u Peruu teško je kad imaš samo tehničku stručnu spremu, pa sada gledam mogućnost da ovdje nastavim univerzitetski studij ili tamo gdje mogu ili čak i prijaviti se na magisterij za strance, ko zna, možda se tako nešto uskoro održi given, ali definitivno je predavanje nešto što mi uljepšava dan

  6.   nešto rekao je

    Nisam pročitao bolje objašnjenje teme, prvi primjer je sjajan

    iako nisam čuo tu riječ (poput 16-bitnih varijabli), dvostruku riječ ili četverokut

    bez obzira što "već programiram", postovi su zanimljivi. Ako treba postojati bilo kakav problem, pošta treba koristiti C (limit.h) kao primjer varijabilnih veličina, C ima najmanje specifičnu specifikaciju koja postoji

    1.    ChrisADR rekao je

      Pozdrav nešto 🙂 hvala vam puno, usput sam došao do primjera 😛 jer su to sigurno poznati podaci za one koji su malo pročitali Assembly, a to je ono što procesor razumije 🙂 hahaha sigurno C nije baš specifičan, ali mislim da je To je zbog činjenice da su prenosivost i različite arhitekture koje podržava toliko varirali da C mora prilagoditi svaku vrstu procesora kako bi bio zaista prenosiv 🙂
      Pozdrav i hvala na podjeli.

  7.   Sergio rekao je

    Osim što bi bilo zanimljivo da se ova serija vodiča temelji na hrđi, mislim da je to jedan od najzanimljivijih jezika koji se danas razvijaju.
    Iza njega sam, ali prepoznajem da je to težak jezik, ali sa sjajnom budućnošću ...
    Radujem se vašim sljedećim člancima, oni su zaista zanimljivi.
    Pozdrav.

    1.    ChrisADR rekao je

      Pozdrav Sergio, bilo bi sigurno zanimljivo, čuo sam da GNOME planira implementirati Rust u svoj paket programa, još nisam vidio puni opseg koji namjeravaju, ali dolazi migracija.
      Što se tiče jezika, ja osobno još uvijek učim C, želim biti u mogućnosti da se počnem razvijati u jezgri u sljedećih nekoliko mjeseci i više volim naučiti nekoliko jezika detaljno prije nego što započnem s pregledom novih, ali definitivno mogu potražiti nešto zanimljivo i napraviti nekoliko primjera u Rustu, jer njegova dokumentacija sama po sebi izgleda prilično dobro.
      Pozdrav i hvala na podjeli 🙂

  8.   David rekao je

    Vrlo dobra objašnjenja, kako u ovom članku, tako i u prethodnom. Nadam se da ćete nastaviti s ovom temom koja mi se čini vrlo zanimljivom.

    1.    ChrisADR rekao je

      Pozdrav Davide, nadam se i da ću moći nastaviti pisati, a posebno motiviram ljude da sudjeluju sa besplatnim softverom, toliko je projekata i potreba da bi bilo dobro imati nekoliko dodatnih ruku za razvoj develop
      Saludos

  9.   Mart rekao je

    Možete li objaviti post o Turingovoj mašini?

    1.    ChrisADR rekao je

      Pozdrav Mart 🙂 Mislim da smo je već spomenuli u nekom komentaru, zar ne? Siguran sam da mogu sastaviti nešto zanimljivo na tu temu 🙂 da vidimo što može izaći. Pozdrav i hvala što ste pročitali sve moje članke, od prvog dana do danas uvijek sam vas vidio prilično zainteresiranim 🙂

  10.   ALLAN LARA rekao je

    Wow, puno vam hvala kako dobro objašnjenje.

    Saludos

    1.    ChrisADR rekao je

      Puno vam hvala, Alane

  11.   ramon hidalgo rekao je

    Pročitao sam vaš prethodni post! Puno vam hvala na objašnjenju, iako mislim da nikada neću završiti razumijevanje riječi.

    1.    ChrisADR rekao je

      Zdravo Ramone, hvala vam što ste pročitali oboje. Ako je od bilo kakve koristi, «riječ» je evolucija bajta, to je poput procesora, prije nego što je bilo 8-bitnih, nakon 16-bitnih itd., To je zato što svaki put kada nam je potrebno više prostora za obradu i bolja brzina ili snaga ... "riječ" je rođena jer je prostor "bajta" bio kratak, a isto kao i "dvostruka" i "četvorka" riječi 🙂 prirodna je evolucija koja nas tjera da dodamo snagu i prostor za nastavak razvoja 🙂

      Saludos

  12.   Anónimo rekao je

    Ove 2018. godine učim programirati da ili da, hvala

    1.    ChrisADR rekao je

      Drago mi je 🙂 potrudite se !! Živjeli

  13.   Guillermo rekao je

    Hvala vam puno, nastavite tako. Već znam kako programirati, ali čekam vaša učenja, da je moje samouko programiranje puno loših praksi.

    1.    ChrisADR rekao je

      Hvala Guillermo 🙂 Pa nadam se da ćete pronaći zanimljive stvari i u sljedećim postovima 🙂 Pozdrav

  14.   Edgar rekao je

    Jednostavno objašnjenje je uvijek najbolje .. izvrsno ..
    Predložio bih git ... za programere je osnovno kada želite raditi kao tim i dovesti svoj posao u red .. verzije ..

    1.    ChrisADR rekao je

      Vrlo istinito Edgar, pokušat ću objaviti sadržaj o tome, iako je prilično teško reći nešto novo, jer je git dokumentacija već obilna i nekoliko stvari je već prevedeno na nekoliko jezika. Vidjet ću što mogu učiniti, pozdrav i hvala na dijeljenju

  15.   tiririri rekao je

    Pozdrav, odgovara li broj od 0 do 18 446 744 073 709 551 615 64-bitnoj decimalnoj vrijednosti ili se odnosi na drugu vrijednost? Pa, računajući snagu od 2 ^ 64, rezultat koji dobivam je: 18 446 744 073 709 552.

    1.    ChrisADR rekao je

      Zdravo Tiririri, mislim da imate problem sa zaokruživanjem, možete pokušati koristiti naredbu bc? je programski jezik dizajniran da bude što precizniji, jednom u njemu samo je potrebno 2^64, možda će to riješiti 🙂 javite mi kako je prošlo, pozdrav

      . Stvarna vrijednost je 18 446 744 073 709 551 616, ali oduzimamo 1 jer se 0 računa kao moguća vrijednost 🙂

      1.    tiririri rekao je

        Hvala, izračunao sam to pomoću kalkulatora snage koji sam pronašao na mreži (https://es.calcuworld.com/calculadoras-matematicas/potencias/) i to je bio rezultat koji mi je dao.
        I da, već sam isprobao naredbu bc i ona mi zapravo daje vrijednost koju ste zapisali.

  16.   tiririri rekao je

    Pozdrav još jednom, slika na kojoj se pozivate na knjižnicu limit.h vrlo je mala i ne može se pročitati (barem je nisam mogla pročitati, jer vidim da su svi to činili), a budući da je ne razumijem Više ne nastavljam čitati. Ne znam da li biste to mogli promijeniti, nadam se da vas neću zamarati time.

    1.    ChrisADR rekao je

      Možete isprobati mobilnu verziju, one izgledaju malo jasnije, riječ je o wordpress temi: / s druge strane, sva zaglavlja C mogu se naći u / usr / include /, u ovom slučaju možete odabrati da ih pročitate direktno ako jednostavnije je 🙂 Pokušat ću učitati veću sliku da vidim da li pomaže

      1.    tiririri rekao je

        Hvala, mislim da bih trebao biti strpljiv sa ovim, heh heh.

  17.   Katekyo rekao je

    Hvala na članku, jer sada sam malo bolje razumio varijable i opseg predstavljanja jezika, ali sada mislim da bih trebao početi koristiti biblioteku "stdint.h", jer je preporučuju za korištenje prilikom programiranja na c-u otkad sam učio je staru školu jer je pamćenje bilo dragocjeno i trebalo je biti oprezan s onim što se koristi

    1.    ChrisADR rekao je

      Za Katekyo nema razloga, svakako je bolje koristiti standardnu ​​biblioteku, ali uvjeravam vas da je bolje znati što razlikuje uint_least8_t od uint_fast8_t, a to se postiže poznavanjem primitivnih tipova podataka, što je i bio cilj posta 🙂 Veliko hvala na komentaru i čitanju članka, pozdrav

  18.   Pobjednik rekao je

    : Ili majstorsko objašnjenje! Znao sam dio koncepata, ali iz ovog posta dobivam puno novih znanja

    1.    ChrisADR rekao je

      Puno vam hvala, Victor 🙂 kako dobro što članak može biti od pomoći, pozdrav

  19.   Guille rekao je

    Zaista mi se svidio Python da mi olakša programiranje, vidio sam tečaj u http://zetcode.com/gui/pyqt4/ Obožavao sam završni tetris: http://zetcode.com/gui/pyqt4/thetetrisgame/
    Ljeti sam retuširao ovaj tetris da bih stavio bodove, više igrača i muziku, malo po malo, ali vrlo zabavno.

    1.    ChrisADR rekao je

      Pozdrav Guille, zasigurno je vrlo zabavno vidjeti kako softver na kojem radiš raste malo po malo 🙂 to je neusporedivo iskustvo, a još više kad nekome ovo što razvijate bude korisno, to je iz drugog svijeta 😀 veliko hvala za dijeljenje 🙂

      1.    Guille rekao je

        Onu koju sam uradio naložio sam (30Mb za muziku) http://guillermo.molleda.com/Tetris9.7z
        Morate konfigurirati različitu početnu brzinu za svakog igrača ili ako ponovo pokrenete bodove nakon nove igre, ..., a tri momčadi će se igrati sa mnom za moje dvije kćeri. Čak izaziva ovisnost.