Muutujad 101: arvuti tundmine

Kahjuks olen näinud, et mitte paljud ei taha õppida seda 2018. aastat programmeerima, kuid isegi kui ma oleksin ainult oma lugu lugenud eelmises artiklis inimene ja suudab mõne aja pärast vabale tarkvaraprojektile pühenduse saata, oleksin oma tööga rahul 🙂

Neile, kes armastavad turvalisust, luban teile, et järgmine on postitus turvalisuse kohta 🙂 nii et kõigil on hea meel, kui keegi soovib midagi muud õppida (nt git, serveri haldamine või mida ma tean: p), või kommenteerida mõnda muud teemat sellele ei saa kommentaarikastis lihtsal viisil vastata, andke mulle teada ja näeme, kuidas saame sellega hakkama 😉

Noh, nüüd kui me läheme oma asja juurde, siis varem rääkisime kirjutamisest ja see oli seotud viisiga, kuidas me oma muutujaid programmis salvestame, nüüd vaatame natuke, mis seal sees toimub ja loodetavasti saab piisavalt selge.

Bitti

Ma arvan, et see on teema, mida ma programmeerimisest kirjutades alati puudutan, see on kindlasti midagi, mis mind paelub ja mis on aidanud mul paljudest asjadest aru saada, nüüd proovin veidi selgitada, kuidas nad on, kuidas neid loetakse ja milleks need on mõeldud 🙂

Mõelge valguslülitile, kui vooluring on suletud, on meil a 0 ekraanil, kui muudame lüliti asendit, sest a 1🙂 lihtne, kas pole?

Nüüd a 0 ja 1 Need võivad tähendada paljusid asju, kõik sõltub loovusest, millega te seda võtate. Oletame, et ma tahan teada, kas keegi läheb põhja või lõunasse, 1 võib tähendada põhja ja 0oletame, et tahan teada, kas keegi on mees või naine, 1 see võib olla mees ja 0, naine 🙂. Nüüd tahan teada, kas see inimene on noor või vana (> 22), 0 võib tähendada noori ja 1, kõrgem. Kujutame edasi ... Kas teil on lemmikloomi? 1 Ma ütleksin jah, samas 0 Ma ütleks ei Nüüd tahan, et loeksite minuga järgmist rida:

1001

See on lühike viis öelda ...

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

mis erineb oluliselt:

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

Bytes

Nüüd läheme veel ühe sammu edasi, õpime baitide lugemist. Bait on 8-bitine jada, mida loetakse paremalt vasakule ja kumbki 1 tähistab võimu 2 tõstetud n kus n on biti asend. Kuna see kõlab nagu hiina keel, toome väikese näite 🙂

01001011 Meil on see bait, nüüd läheme paremalt vasakule (<-). Panen need ülevalt alla, et saaksin nende tähenduse kirjutada:

1: otsas olev asend 0 näitab, et meil on järgmised 2 tõstetud nulli või 2^0. See hästi teadaolev on samaväärne 1.

1: teine ​​bitt, nüüd positsioon 12^1 mis on sama mis öelda 2

0: kolmas bit ... see peaks olema 2^2, kuid kuna see pole sees, siis jätame selle sisse 0

1: neljas bitt, 2^3 u 8 🙂

0: sama mis 0

0: muu 0

1: nüüd oleme sees 2^6 o 64

ja lõpuks 0 , me juba teame, mida see tähendab 🙂 nüüd lisame oma tulemused ja võrdleme neid järgmise tabeliga 🙂 Meil ​​on 75 nii et otsime seda veerust Kümnend- ja me näeme, mis ilmub Char

Ascii tabeli pildi tulemus

Meil on üks K!! Palju õnne, teate juba, kuidas binaarselt lugeda 🙂 Kuid kõige nõtkem võib olla märganud, et oleme saanud ka kümnendarvu ja sellel on piir (kui kõik väärtused on 1) See piir on arv 255.

sõna

Nüüd ütleb mulle rohkem kui üks, aga mis siis, kui mul on vaja numbrit, mis on suurem kui 255? või kust leida muid jaapanlastest märke? Noh, vastus on lihtne, paneme kokku 2 bytes. Nüüd, kui meil on kaks, on võimalik kombinatsioonide arv 2^16 o 65536 võimalikud tulemused, näiteks 0 on üks neist, maksimaalne võimalik on 65535. Kas see number helistab kellelegi kellale? Kas mäletate Linuxi maksimaalset sadamate arvu? Jätan neile kodutöö 😉

Topelt- ja neljasõna

Matemaatilisemaks on olemas ka konkreetsed vormingud, kahekordne sõna sisaldavad, nagu paljud võivad juba ette kujutada 2 word o 4 bytes (o 32 bits) teavet, sama mis öelda:

11111111111111111111111111111111 kuni 0 a 4 294 967 295

Siinkohal mõtlevad paljud, mis juhtub negatiivsete arvudega, st kusagil tuleb neid kaaluda, eks? Negatiivse arvu salvestamiseks otsustasid protsessori arendajad hõivata märgi väärtusena esimese vasakpoolse biti. See tähendab, et kui esimene bitt on 0 me räägime positiivsest arvust, kuid kui see on nii 1 meil on negatiivne. Nüüd vaadake, miks bitid on nii erilised, et need võivad olla kõik, mida soovite 😀

Kuid see jätab meile ilmselgelt korrutamise ühe positsiooni vähemaks! Nii et meie0 a 4 294 967 295 saab:

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

Nüüd on paljud meist juba seda teinud 64 bitsja see on a väärtus neljasõna, meil võivad olla väärtused vahemikus 0 a 18 446 744 073 709 551 615. See on suur arv 🙂

Miks 8-bitine?

See on midagi, mida rohkem kui üks võib imestada, ja vastus on riistvaras. Algusest peale vajasid töötlejad toimingute sooritamiseks andmeid. Andmed salvestatakse arvuti mällu ja iga kord, kui protsessor seda nõuab, kasutab ta nende saamiseks andmebusse. Iidsetel aegadel võisid need bussid tsükli kohta edastada maksimaalselt 8 bitti, see tähendab, et maksimaalne ja tõhusam viis andmete teisaldamiseks oli 8 bitti grupeerimine ja protsessorile saatmine.

Aja möödudes on tänaseni töötlejad välja töötanud võime liikuda 16 bitti, 32 bitti ja… 64 bitti.

Mis on sellel pistmist?

Oleme nüüd selles osas, kus see kõik on mõistlik. 🙂 Sisestamine on omadus, mida programmeerimiskeeled nende mäluruumide nimetamiseks kasutavad. Kõigil muutujatel on vaste ühes sellist tüüpi andmetest, olenemata sellest, kuidas neid nimetatakse. Need on tuntud kui primitiivsed andmetüübidIgal tugevalt kirjutatud keelel on nende väärtuste kontseptsioon ja nende esindatav kogus. Näiteks C-s on meil raamatukogu limits.h mis näitab meile primitiivsete väärtuste maksimaalset ja minimaalset kogust.

Vaatame, mis juhtub, kui proovime ühte väärtustest murda:

Oma. Christopher Diaz Riveros

Paremal on meil faili väärtused limits.h ja vasakul oleme võtnud ühe neist väärtustest (unsigned short int) ja oleme määranud vastavast suurema numbri. Selle tulemusena hoiatab koostaja meid, et me kasutame mälu valesti, kuna binaarne vorm 66666 ei mahu binaarsesse vormi 65535. See viib meid õppetundini aastal jõudlus kui programmeerime, kui teie väärtus ei hakka aja jooksul palju kasvama või kui te ei nõua nii suuri väärtusi kui kahekordistada o neljasõnaÕige tüübi kasutamine vähendab protsessori soovitud mälumahtu, mis tähendab andmete kiiremat saamist, kui see on hästi arvutatud.

Tõlgi poolel on see tänu kaudsed konversioonid. CKui defineerime muutuja sellistes keeltes nagu javascript või Python, on tõlgi ülesandeks mõista, mis tüüpi see on, ja eraldada operatsioonide teostamiseks piisavalt mäluruumi. Vaatame lihtsat näidet 🙂

Oma. Christopher Diaz Riveros

Nagu näete, ei pea me pythoni interpretaatorile meie muutuja tüüpi selgitama, sest see hoolitseb tüübi määramise ja mällu salvestamise eest 🙂

Teadke oma muutujaid

See sõltub keelest ja juurutamise tüübist, mida kavatsete kasutada, kuid esimene samm programmeerimiseks on õppida muutujaid, mida saate kasutada 🙂 Kui olete muutujatest aru saanud, on teil võimalus neid teabe salvestamiseks tõhusalt ja loogiliselt kasutada (pakutakse kasutaja või süsteemi poolt). See on esimene samm programmeerimisredelil ja loodetavasti saate pärast selle artikli lugemist paremini mõista, kuidas teie arvuti töötab ja kuidas see teavet salvestab. See on minuga kuni järgmise artiklini. Ärge unustage jätta oma kommentaarid, et näha, kas peate mõnda konkreetset punkti tugevdama või kommenteerima. Terviseks


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.

  1.   Luis DIJO

    Hästi kirjutatud, napisõnaline ja selge, samal ajal huvitav kõigile publikutele. Hea töö.

    1.    ChrisADR DIJO

      Suur aitäh, tervitused 🙂

  2.   Johannes Jeesus DIJO

    Suurepärane seletus. Sa oled masin.

    1.    ChrisADR DIJO

      Aitäh

  3.   Ruben DIJO

    Väga hästi selgitatud aitäh

    1.    ChrisADR DIJO

      Täname teid selle täieliku lugemise eest 🙂

  4.   Diego DIJO

    Suurepärane, aitäh panuse eest. Binaarküsimust ära kasutades on võimalus, et annate meile klassi IP, alamvõrgu jne. Saan aru, et see pole programmeerimisprobleem, kuid selle teema hea selgitus on alati olnud ootel.
    Veelkord, aitäh selgituse eest

    1.    ChrisADR DIJO

      Tere, Diego, seda saab teha 🙂 tõe välja ütlemiseks pole ka mina selle teemaga eriti tegelenud, kuid uurimiseks pole paremat viisi kui otsida artiklist selle kohta midagi jagada 🙂 Jätame selle nimekirja sest järgmisel postitusel on juba teema ja see hakkab tegelema karastamisega. Tervitused 🙂

  5.   Pedro DIJO

    Oled suurepärane õpetaja ja õpetad väga heldelt seda, mida tead. Palju õnne ja aitäh.

    1.    ChrisADR DIJO

      Suur aitäh Pedro 🙂 Otsin endiselt kohti õpetamiseks, kahjuks siin Peruus on keeruline, kui teil on ainult tehniline erialane kraad, nii et nüüd uurin võimalust jätkata ülikooliõpinguid siin või kus saan või ei kandideerida isegi välismaalase magistrikraadile, kes teab, võib-olla saab varsti midagi sellist anda 🙂 aga kindlasti on õpetamine midagi, mis mu päeva teeb makes Tervitused

  6.   midagi DIJO

    Ma polnud selle teema paremat selgitust lugenud, esimene näide on geniaalne

    kuigi ma polnud seda sõna (nagu 16-bitised muutujad), topelt- või nelja sõna kuulnud

    Olenemata "juba programmeerimisest", on postitused huvitavad. Probleemi ilmnemisel peab postitus kasutama muutuja suuruste näitena C (limits.h), C-l on kõige vähem spetsifikatsiooni, mis on olemas

    1.    ChrisADR DIJO

      Tere midagi 🙂 tänan teid väga, tulin näite teele 😛, sest see on kindlasti teada nende jaoks, kes on natuke Assambleed lugenud, ja see on protsessori arusaam 🙂 hahaha kindlasti C ei ole väga konkreetne, kuid ma arvan, et see on tingitud asjaolust, et teisaldatavus ja selle poolt toetatud erinevad arhitektuurid on olnud nii erinevad, et C peab sobima igat tüüpi protsessoritega, et olla tõeliselt kaasaskantav 🙂
      Tervitused ja tänud jagamise eest.

  7.   Sergio DIJO

    Oleks huvitav, kui see õpetuste sari põhineks roostel, arvan, et see on üks huvitavamaid keeli, mida tänapäeval arendatakse.
    Olen tema taga, kuid tunnistan, et see on keeruline keel, kuid suure tulevikuga ...
    Ootan huviga teie järgmisi artikleid, need on tõesti huvitavad.
    Tervitused.

    1.    ChrisADR DIJO

      Tere, Sergio, see oleks kindlasti huvitav, olen kuulnud, et GNOME kavatseb Rusti oma programmikomplekti raames juurutada, ma ei ole veel näinud nende kogu ulatust, mida nad kavatsevad, kuid migratsioon on tulemas.
      Mis puutub keeltesse, siis isiklikult õpin ma veel C-d, tahan, et saaksin järgmise paari kuu jooksul kernelis arenema hakata ja eelistan enne uute keelte ülevaatamise alustamist paar keelt põhjalikult õppida, kuid kindlasti saan otsida midagi huvitavat ja teha mõned näited Rustis, kuna selle dokumentatsioon näeb üksi päris hea välja.
      Tervitused ja tänud jagamise eest 🙂

  8.   David DIJO

    Väga head selgitused nii selles artiklis kui ka eelmises. Loodan, et jätkate selle teemaga, mis on minu arvates väga huvitav.

    1.    ChrisADR DIJO

      Tere, David, loodan ka jätkata kirjutamist ja eriti motiveerida inimesi tasuta tarkvaraga osalema. Projekte ja vajadusi on nüüd nii palju, et mõne lisakäe arendamine oleks tore 🙂
      seoses

  9.   Kaubanduskeskus DIJO

    Kas saaksite teha postituse Turingi masina kohta?

    1.    ChrisADR DIJO

      Tere Mart 🙂 Ma arvan, et oleme mõnes kommentaaris seda varemgi puudutanud, eks? Olen kindel, et suudan sel teemal midagi huvitavat kokku panna 🙂 vaatame, mis välja võib tulla. Tervitused ja tänud kõigi minu artiklite lugemise eest, esimesest päevast tänaseni olen teid alati üsna huvitatuna näinud 🙂

  10.   ALLAN LARA DIJO

    Wow, suur aitäh, kui hea selgitus.

    seoses

    1.    ChrisADR DIJO

      Tänan teid väga Allani tervitustega

  11.   ramon hidalgo DIJO

    Ma lugesin teie eelmist postitust! Tänan teid väga selgituse eest, kuigi arvan, et ei saa kunagi sõnast aru.

    1.    ChrisADR DIJO

      Tere Ramon 🙂 suur aitäh mõlema lugemise eest. Kui sellest on mingit kasu, on see sõna baidi evolutsioon, see on nagu protsessorid, enne kui oli 8-bitine, pärast 16-bitist jne ... seda seetõttu, et iga kord vajame rohkem ruumi protsess ja parem kiirus või võimsus ... "sõna" sündis seetõttu, et "baidi" ruum jäi alla ja sama "topelt" ja "quad" sõnaga 🙂 see on loomulik evolutsioon, mis paneb meid lisama jõudu ja ruumi arendamise jätkamiseks 🙂

      seoses

  12.   anonüümne DIJO

    Sel 2018. aastal õpin programmeerima jah või jah, aitäh

    1.    ChrisADR DIJO

      Mul on hea meel 🙂 proovige kõvasti !! Terviseks

  13.   Guillermo DIJO

    Suur aitäh, jätka seda. Ma oskan juba programmeerida, kuid ootan teie õpetusi, et minu iseõppinud programmeerimine on täis halbu tavasid.

    1.    ChrisADR DIJO

      Aitäh Guillermo 🙂 Noh, loodan, et leiate huvitavaid asju ka järgmistest postitustest 🙂 Tervitused

  14.   Edgar DIJO

    Lihtne selgitus on alati parim .. suurepärane ..
    Ma pakuksin välja git ... programmeerijatele on see põhiline, kui soovite töötada meeskonnana ja oma tööd korda teha .. versioonid ..

    1.    ChrisADR DIJO

      Väga õige Edgar, proovin selle kohta sisu postitada, kuigi midagi uut öelda on üsna keeruline, sest git-dokumentatsiooni on juba palju ja mitu asja on juba tõlgitud mitmesse keelde. Vaatan, mida saan teha, tervitused ja tänud jagamise eest

  15.   tiririri DIJO

    Tere, kas number 0–18 446 744 073 709 551 615 vastab 64-bitisele kümnendarvule või viitab mõnele muule väärtusele? Noh, arvutades 2 ^ 64 võimsuse, saan tulemuseks: 18 446 744 073 709 552 000.

    1.    ChrisADR DIJO

      Tere Tiririri, ma arvan, et teil on ümardamisprobleem. Võite proovida käsku kasutada bc? on programmeerimiskeel, mis on loodud võimalikult täpselt, selle sees olles on seda vaja ainult teha 2^64, võib-olla see lahendab selle, sest andke mulle teada, kuidas läks, tervitused

      . Reaalne väärtus on 18 446 744 073 709 551 616, kuid lahutame 1, kuna 0 loetakse võimaliku väärtusena 🙂

      1.    tiririri DIJO

        Aitäh, arvutasin, et võimsuskalkulaatoriga, mille leidsin netist (https://es.calcuworld.com/calculadoras-matematicas/potencias/) ja selle tulemuse see mulle andis.
        Ja jah, ma proovisin juba käsku bc ja see annab mulle tegelikult väärtuse, mille te üles kirjutasite.

  16.   tiririri DIJO

    Tere veelkord, pilt, kus te viitate limit.h teegile, on väga väike ja seda ei saa lugeda (vähemalt ma ei suutnud seda lugeda, sest ma näen, et kõik seda tegid, tundub) ja kuna ma ei saa sellest aru Ma ei jätka enam lugemist. Ma ei tea, kas saaksite seda muuta, loodan, et ma ei häirinud teid sellega.

    1.    ChrisADR DIJO

      Võite proovida mobiiliversiooni, need näevad natuke selgemad välja, see on WordPress-teema: / teisest küljest leiate kõik C-päised kataloogist / usr / include /, sel juhul saate selle otse lugeda, kui soovite see on lihtsam 🙂 proovin üles laadida suurema pildi, et näha, kas see aitab 🙂

      1.    tiririri DIJO

        Aitäh, ma arvan, et peaksin selle suhtes kannatlik olema, heh heh.

  17.   Katekyo DIJO

    Tänan artikli eest, sest nüüd mõistsin natuke paremini keele muutujaid ja esituste ulatust ning nüüd arvan, et peaksin hakkama kasutama teeki "stdint.h", kuna nad soovitavad seda kasutada c-s programmeerimisel, kuna mul oli õpetatud vanale koolile, kuna mälu oli kallis ja kasutatuga tuli olla ettevaatlik

    1.    ChrisADR DIJO

      Katekyol pole mingit põhjust, kindlasti on parem kasutada tavalist teeki, kuid võin teile kinnitada, et parem on teada, mis eristab uint_least8_t uint_fast8_t-st ja see saavutatakse primitiivsete andmetüüpide tundmisega, mis oli eesmärk postituse 🙂 Suur tänu kommentaari ja artikli lugemise eest, tervitused

  18.   võitja DIJO

    : Või meisterlik selgitus! Teadsin osa mõisteid, kuid saan sellest postitusest palju uusi teadmisi

    1.    ChrisADR DIJO

      Suur aitäh Victor 🙂 kui hea, et artiklist võib abi olla, tervitused

  19.   Guille DIJO

    Mulle meeldis Python programmeerimise hõlbustamiseks väga, nägin selles kursust http://zetcode.com/gui/pyqt4/ Mulle meeldis viimane tetris umbes: http://zetcode.com/gui/pyqt4/thetetrisgame/
    Ma retušeerisin seda tetrist suve jooksul, et panna punkte, mitmikmängu ja muusikat, vähehaaval, kuid väga lõbus.

    1.    ChrisADR DIJO

      Tere, Guille, kindlasti on väga lõbus vaadata, kuidas tarkvara, millega töötate, kasvab tasapisi 🙂 see on võrreldamatu kogemus ja veelgi enam, kui keegi peab teie arendatavat kasulikuks, see on teisest maailmast 😀 aitäh teile väga jagamiseks 🙂

      1.    Guille DIJO

        Selle, mille tegin, olen üles laadinud (muusika jaoks 30 MB) http://guillermo.molleda.com/Tetris9.7z
        Iga mängija jaoks peate konfigureerima erineva algkiiruse või kui taaskäivitate punkte pärast uut mängu,… ja minu kahel tütrel on minuga mängida kolm mängijat. See tekitab isegi sõltuvust.