Proměnné 101: Znalost vašeho počítače

Bohužel jsem viděl, že mnoho lidí se nechce naučit programovat tento rok 2018 🙁, ale i kdybych si přečetl jen můj předchozí článek člověk a po krátké době je schopen poslat závazek k bezplatnému softwarovému projektu, byl bych se svou prací spokojen 🙂

Pro ty, kteří milují bezpečnost, slibuji, že následující bude příspěvek o bezpečnostních úlohách, takže každý je šťastný, pokud se někdo chce naučit něco jiného (například git, správa serveru nebo nevím: p), nebo komentujte nějaké jiné téma, na které nelze snadno odpovědět v poli pro komentáře, dejte mi vědět a my uvidíme, jak to dokážeme zpracovat 😉

No, když půjdeme k naší věci, předtím jsme mluvili o psaní, a že to mělo co do činění se způsobem, jakým ukládáme naše proměnné v programu, nyní přezkoumáme trochu toho, co se děje uvnitř a doufejme, že může být dostatečně jasný.

Bity

Myslím, že toto je téma, kterého se vždy dotýkám, když píšu o programování, je to určitě něco, co mě fascinuje a které mi pomohlo pochopit mnoho věcí, nyní se pokusím trochu vysvětlit, jaké jsou, jak jsou čteny a k čemu jsou 🙂

Přemýšlejte o spínači světla, když je obvod uzavřen, máme a 0 na obrazovce, když změníme polohu přepínače, protože a 1🙂 jednoduché, že?

Teď a 01 Mohou znamenat mnoho věcí, vše záleží na kreativitě, s jakou to berete, předpokládám, že chci vědět, jestli někdo jede na sever nebo jih, 1 může znamenat sever a 0, sur 🙂 řekněme, že chci vědět, jestli je někdo muž nebo žena, 1 může to být muž a 0, žena 🙂. Nyní chci vědět, jestli je tato osoba mladá nebo stará (> 22), 0 může znamenat mladý a 1, vyšší. Pořád si představujme ... Máte nějaké domácí mazlíčky? 1 Řekl bych, že ano 0 Řekl bych ne Nyní chci, abyste si se mnou přečetli následující řádek:

1001

Toto je krátký způsob, jak říct ...

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

což se velmi liší od:

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

Bytů

Pojďme nyní o krok dále, naučme se číst bajty. Bajt je sekvence 8 bitů, které se čtou zprava doleva a každý z nich 1 představuje sílu 2 zvedl k n kde n je poloha bitu. Protože to zní jako čínština, řekněme malý příklad 🙂

01001011 Máme tento bajt, nyní jdeme zprava doleva (<-), dám je shora dolů, abych mohl napsat jejich význam:

1: bit, když je na místě 0 označuje, že máme následující 2 zvýšeny na nulu nebo 2^0. Víme, že to je ekvivalentní 1.

1: druhý bit, nyní pozice 12^1 což je totéž, jako říkat 2

0: třetí bit ... to by mělo být 2^2, ale protože to není zapnuté, nechme to zapnuté 0

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

0: stejný jako 0

0: jiný 0

1: teď jsme v 2^6 o 64

a konečně 0 , už víme, co to znamená 🙂 nyní přidáme naše výsledky a porovnáme je s následující tabulkou 🙂 Máme 75 Pojďme to tedy hledat ve sloupci Desetinný a uvidíme, co se objeví v Char

Výsledek obrázku pro tabulku ascii

Máme jednu K!! Gratulujeme, už víte, jak číst v binárním formátu 🙂 Ale ti nejchytřejší si možná všimli, že jsme také získali desetinné číslo a že to má limit (když jsou všechny hodnoty 1) Tento limit se nachází v počtu 255.

Slovo

Nyní mi to řekne více než jeden, ale co když budu potřebovat číslo větší než 255? nebo kde najdu jiné postavy jako Japonci? Odpověď je jednoduchá, pojďme to dát dohromady 2 bytes. Nyní, když máme dvě, je možný počet kombinací, které máme 2^16 o 65536 možné výsledky, jako např 0 je jedním z nich, maximální možné je 65535. Zvoní to číslo? Pamatujete si maximální počet portů v systému Linux? Nechávám jim domácí úkoly 😉

Dvojité slovo a čtyřslovné slovo

Pro matematičtější existují také specifické formáty, dvojité slovo obsahují, jak si již mnozí možná představovali 2 word o 4 bytes (o 32 bits) informací, stejně jako říká:

11111111111111111111111111111111 na 0 a 4 294 967 295

V tomto okamžiku se mnozí budou divit, co se stane se zápornými čísly, to znamená, že někde je třeba uvažovat, že? Aby bylo možné uložit záporné číslo, rozhodli se vývojáři procesorů obsadit první bit vlevo jako hodnotu znaménka. To znamená, že pokud je první bit 0 mluvíme o kladném čísle, ale pokud ano 1 máme zápor. Nyní se podívejte, proč jsou bity tak speciální, že mohou být tím, co chcete 😀

Ale to nám samozřejmě ponechává jednu pozici méně, abychom mohli znásobit! Takže naše0 a 4 294 967 295 se stává:

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

Mnozí z nás to již mají 64 bits, a to je hodnota a čtvercové slovo, můžeme mít hodnoty od 0 a 18 446 744 073 709 551 615. To je velké číslo 🙂

Proč 8 bitů?

To je něco, co by se mohlo divit více než jednomu, a odpověď je v hardware. Procesory od začátku potřebovaly data, aby mohly provádět operace. Data jsou uložena v paměti počítače a pokaždé, když to procesor vyžaduje, použije k jejich získání datové sběrnice. Ve starověku mohly tyto sběrnice komunikovat maximálně 8 bitů na cyklus, což znamená, že maximální a nejúčinnější způsob přesunu dat seskupoval 8 bitů a odesílal je do procesoru.

S odstupem času až dodnes vyvinuli procesory schopnost přesouvat 16 bitů, 32 bitů a… 64 bitů.

Co to má společného se psaním?

Nyní jsme u části, kde to všechno dává smysl 🙂 Psaní je vlastnost, kterou programovací jazyky používají k pojmenování těchto paměťových prostorů. Všechny proměnné mají svůj protějšek v jednom z těchto typů dat, bez ohledu na to, jak se nazývají. Tito jsou známí jako primitivní datové typyKaždý jazyk se silným typem má svou koncepci těchto hodnot a množství, které představují. Například v C máme knihovnu limits.h což nám ukazuje maximální a minimální množství primitivních hodnot.

Podívejme se, co se stane, když se pokusíme prolomit jednu z hodnot:

Vlastní. Christopher Diaz Riveros

Vpravo máme hodnoty souboru limits.h a nalevo jsme vzali jednu z těchto hodnot (unsigned short int) a přidělili jsme číslo vyšší než odpovídající. Ve výsledku nás kompilátor varuje, že zneužíváme paměť, protože binární forma 66666 se nevejde do binární formy 65535. To nás vede k lekci výkon když programujeme, pokud vaše hodnota v průběhu času nebude moc růst, nebo pokud nepožadujete hodnoty tak velké, jako jsou hodnoty zdvojnásobit o čtvercové slovoPoužití správného typu snižuje množství paměti požadované procesorem, což znamená vyšší rychlost získávání dat, pokud jsou dobře vypočítány.

Na straně tlumočníka je to snazší díky implicitní převody. Ckdyž definujeme proměnnou v jazycích, jako je javascript nebo Python, tlumočník má na starosti pochopení, o jaký typ jde, a přidělení dostatečného paměťového prostoru pro provádění operací. Podívejme se na jednoduchý příklad 🙂

Vlastní. Christopher Diaz Riveros

Jak vidíte, nemusíme vysvětlovat tlumočníkovi pythonu typ naší proměnné, protože má na starosti přiřazení typu a jeho uložení do paměti 🙂

Znát své proměnné

Závisí to na jazyce a typu implementace, kterou budete používat, ale prvním krokem k tomu, abyste mohli programovat, je naučit se proměnné, které můžete použít 🙂 Jakmile pochopíte proměnné, budete je moci používat efektivně a logicky ukládat informace (poskytované uživatelem nebo systémem). Toto je první krok na žebříčku programování a doufejme, že po přečtení tohoto článku budete lépe rozumět tomu, jak váš počítač funguje a jak ukládá informace. Bude to se mnou až do dalšího článku, nezapomeňte zanechat své komentáře, abyste zjistili, zda musíte posílit nebo komentovat nějaký konkrétní bod. pozdravy


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.

  1.   Luis řekl

    Dobře napsané, stručné a jasné, zároveň zajímavé pro všechny diváky. Dobrá práce.

    1.    ChrisADR řekl

      Moc děkuji, pozdravy 🙂

  2.   John Jesus řekl

    Skvělé vysvětlení. Jsi stroj.

    1.    ChrisADR řekl

      Děkuji

  3.   Ruben řekl

    Velmi dobře vysvětleno díky

    1.    ChrisADR řekl

      Děkujeme, že jste si jej přečetli celý 🙂

  4.   Diego řekl

    Výborně, děkuji za vstup. A s využitím binárního problému existuje možnost, že nám dáte třídu IP, podsítě atd. Chápu, že nejde o problém s programováním, ale dobré vysvětlení tohoto problému bylo vždy nevyřešeno.
    Ještě jednou děkuji za vaše vysvětlení

    1.    ChrisADR řekl

      Ahoj Diegu, dá se to 🙂 abych řekl pravdu, ani já jsem se tématem moc nezabýval, ale není lepší způsob, jak to prozkoumat, než hledat něco, o čem by se dalo podělit v článku 🙂 Necháme to na seznamu protože další příspěvek již má předmět a bude se zabývat kalením. Zdravím 🙂

  5.   Pedro řekl

    Jste vynikající učitel a velmi velkorysý pro výuku toho, co víte. Gratulujeme a děkujeme.

    1.    ChrisADR řekl

      Děkuji moc Pedro 🙂 Stále hledám místa, kde bych učil, bohužel tady v Peru je to těžké, když máš pouze technický odborný titul, takže teď se dívám na možnost pokračovat ve studiu na univerzitě zde nebo kde můžu nebo dokonce se přihlaste na magisterský titul v cizinci, kdoví, možná se něco takového brzy podá 🙂 ale rozhodně mi výuka dělá den

  6.   něco řekl

    Nečetl jsem lepší vysvětlení předmětu, první příklad je skvělý

    i když jsem toto slovo (jako 16bitové proměnné) neslyšel, dvojité slovo nebo čtyřnásobné slovo

    Bez ohledu na „již programování“ jsou příspěvky zajímavé. Pokud existuje nějaký problém, příspěvek má použít C (limits.h) jako příklad velikostí proměnných, C má nejméně specifickou specifikaci, která existuje

    1.    ChrisADR řekl

      Ahoj něco 🙂 děkuji moc, přišel jsem s příkladem na cestě 😛 protože to jsou určitě známá data pro ty, kteří si přečetli trochu shromáždění, a to je procesor, kterému rozumí 🙂 hahaha určitě C není příliš konkrétní, ale myslím, že je to Důvodem je skutečnost, že přenositelnost a různé architektury, které podporuje, byly tak rozmanité, že C musí vyhovět každému typu procesoru, aby byl skutečně přenosný 🙂
      Zdravím a děkuji za sdílení.

  7.   Sergio řekl

    Nebylo by zajímavé, kdyby tato řada výukových programů byla založena na rezu, myslím, že je to jeden z nejzajímavějších jazyků, které se dnes vyvíjejí.
    Jsem za ním, ale uznávám, že je to obtížný jazyk, ale s velkou budoucností ...
    Těším se na vaše další články, jsou opravdu zajímavé.
    Zdravím.

    1.    ChrisADR řekl

      Dobrý den, Sergio, bylo by to určitě zajímavé, slyšel jsem, že GNOME plánuje implementovat Rust v rámci své sady programů, ještě jsem neviděl celý rozsah, který zamýšlejí, ale přichází migrace.
      Co se týče jazyků, já osobně se stále učím C, chci mít možnost začít se v jádře vyvíjet v příštích několika měsících a raději se naučím několik jazyků do hloubky, než začnu zkoumat nové, ale můžu rozhodně hledejte něco zajímavého a udělejte pár příkladů v Rustu, protože jeho dokumentace vypadá sama o sobě docela dobře.
      Zdravím a děkuji za sdílení 🙂

  8.   David řekl

    Velmi dobré vysvětlení, jak v tomto článku, tak v předchozím. Doufám, že budete pokračovat v tomto tématu, které mi připadá velmi zajímavé.

    1.    ChrisADR řekl

      Ahoj Davide, také doufám, že budu pokračovat v psaní a zejména v motivování lidí k účasti s bezplatným softwarem, nyní existuje tolik projektů a potřeb, že mít pár dalších rukou k vývoji by bylo skvělé 🙂
      pozdravy

  9.   Mart řekl

    Mohl byste zveřejnit příspěvek o Turingově stroji?

    1.    ChrisADR řekl

      Ahoj Mart 🙂 Myslím, že v nějakém komentáři jsme se toho dotkli už dříve, že? Jsem si jistý, že dokážu dát dohromady něco zajímavého na toto téma 🙂 podívejme se, co může vyjít. Zdravím a děkuji za přečtení všech mých článků, od prvního dne až do dneška jsem vás vždy viděl docela zajímat 🙂

  10.   ALLAN LARA řekl

    Páni, moc vám děkuji, jaké dobré vysvětlení.

    pozdravy

    1.    ChrisADR řekl

      Moc děkuji Allane 🙂 jde

  11.   ramon hidalgo řekl

    Přečetl jsem si váš předchozí příspěvek! Moc děkuji za vysvětlení, i když si myslím, že tomu slovu nikdy nedokončím.

    1.    ChrisADR řekl

      Ahoj Ramone 🙂 moc děkuji za přečtení obou. Pokud je to „slovo“ jakékoli, je to vývoj bajtu, je to jako procesory, než tam bylo 8 bitů, po 16 bitech atd ... je to proto, že pokaždé, když potřebujeme více prostoru pro zpracování a lepší rychlost výkonu ... „slovo“ se zrodilo, protože prostor „bajtu“ byl krátký, a totéž platí pro slovo „double“ a „quad“ 🙂 je to přirozený vývoj, který nás nutí přidávat sílu a prostor pokračovat ve vývoji 🙂

      pozdravy

  12.   anonymní řekl

    V roce 2018 se učím programovat ano nebo ano, děkuji

    1.    ChrisADR řekl

      Jsem rád 🙂 zkuste to !! pozdravy

  13.   Guillermo řekl

    Mockrát vám děkuji, držte to. Už vím, jak programovat, ale očekávám vaše učení, že moje programování pro samouky je plné špatných postupů.

    1.    ChrisADR řekl

      Díky Guillermo 🙂 No doufám, že najdete zajímavé věci i v následujících příspěvcích 🙂 Zdravím

  14.   Edgar řekl

    Jednoduché vysvětlení je vždy nejlepší .. vynikající ..
    Navrhoval bych git ... pro programátory je to základní, když chcete pracovat jako tým a dát si pořádek do pořádku .. verze ..

    1.    ChrisADR řekl

      Velmi pravdivý Edgari, pokusím se o tom zveřejnit obsah, i když je docela těžké říci něco nového, protože dokumentace git je již bohatá a několik věcí je již přeloženo do několika jazyků. Uvidím, co mohu udělat, pozdravy a poděkování za sdílení

  15.   tiririri řekl

    Dobrý den, odpovídá číslo od 0 do 18 446 744 073 709 551 615 64bitové desítkové hodnotě nebo odkazuje na jinou hodnotu? No, výpočet síly 2 ^ 64, výsledek, který dostanu, je: 18 446 744 073 709 552 000.

    1.    ChrisADR řekl

      Ahoj Tiririri, myslím, že máš problém se zaokrouhlováním, můžeš zkusit použít příkaz bc? je programovací jazyk navržený tak, aby byl co nejpřesnější, jakmile je uvnitř, je to jen nutné udělat 2^64, možná to vyřeší 🙂 dejte mi vědět, jak to šlo, pozdravy

      . Skutečná hodnota je 18 446 744 073 709 551 616, ale odečítáme 1, protože 0 se počítá jako možná hodnota 🙂

      1.    tiririri řekl

        Díky, vypočítal jsem to pomocí kalkulačky výkonu, kterou jsem našel na internetu (https://es.calcuworld.com/calculadoras-matematicas/potencias/) a to byl výsledek, který mi dal.
        A ano, už jsem vyzkoušel příkaz bc a účinně mi dává hodnotu, kterou jste si zapsali.

  16.   tiririri řekl

    Ahoj znovu, obrázek, na který odkazujete na limits.h knihovnu, je velmi malý a nelze jej přečíst (alespoň jsem jej nemohl přečíst, protože vidím, že to udělal každý, zdá se), a protože tomu nerozumím Už nepokračuji ve čtení. Nevím, jestli byste to mohli změnit, doufám, že vás tím neobtěžuji.

    1.    ChrisADR řekl

      Můžete si vyzkoušet mobilní verzi, ty vypadají trochu jasněji, je to téma wordpressu: / na druhou stranu všechny hlavičky C najdete v / usr / include /, v tomto případě si můžete vybrat, zda si je chcete přečíst přímo, pokud Je to jednodušší 🙂 Pokusím se nahrát větší obrázek, abych zjistil, zda to pomůže 🙂

      1.    tiririri řekl

        Díky, myslím, že bych s tím měl být trpělivý, heh heh.

  17.   Katekyo řekl

    Díky za článek od té doby jsem trochu lépe pochopil proměnné a rozsah reprezentace jazyka a teď si myslím, že bych měl začít používat knihovnu "stdint.h", protože ji doporučují použít při programování vc, protože jsem měl byla učena stará škola, protože paměť byla vzácná a člověk musel být opatrný s tím, co bylo použito

    1.    ChrisADR řekl

      Neexistuje žádné Katekyo, určitě je lepší použít standardní knihovnu, ale mohu vás ujistit, že je lepší vědět, co odlišuje uint_least8_t od uint_fast8_t a čehož je dosaženo znalostí primitivních datových typů, což byl cíl příspěvek 🙂 Mnohokrát děkuji za komentář a za přečtení článku, pozdravy

  18.   vítěz řekl

    : Nebo mistrovské vysvětlení! Znal jsem část konceptů, ale z tohoto příspěvku mám spoustu nových poznatků

    1.    ChrisADR řekl

      Děkuji moc Victor 🙂 jak dobré, že článek může pomoci, pozdravy

  19.   Guille řekl

    Python se mi opravdu líbil, abych usnadnil programování, viděl jsem kurz dovnitř http://zetcode.com/gui/pyqt4/ Miloval jsem poslední tetris: http://zetcode.com/gui/pyqt4/thetetrisgame/
    Během léta jsem retušoval tento tetris, abych dal body, hru pro více hráčů a hudbu, kousek po kousku, ale velmi zábavný.

    1.    ChrisADR řekl

      Ahoj Guille, je jistě velmi zábavné vidět, jak software, na kterém pracuješ, roste kousek po kousku 🙂 je to neporovnatelná zkušenost a ještě více, když někdo najde to, co vyvíjíš, užitečné, to je z jiného světa 😀 moc děkuji pro sdílení 🙂

      1.    Guille řekl

        Ten, který jsem udělal, jsem nahrál (30 MB pro hudbu) http://guillermo.molleda.com/Tetris9.7z
        Musíte nakonfigurovat jinou počáteční rychlost pro každého hráče, nebo pokud restartujete body po nové hře, ... a jsou tu tři hráči, aby si se mnou hrály moje dvě dcery. Je to dokonce návykové.