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 0
a 1
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 1
: 2^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
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:
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 🙂
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
Dobře napsané, stručné a jasné, zároveň zajímavé pro všechny diváky. Dobrá práce.
Moc děkuji, pozdravy 🙂
Skvělé vysvětlení. Jsi stroj.
Děkuji
Velmi dobře vysvětleno díky
Děkujeme, že jste si jej přečetli celý 🙂
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í
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 🙂
Jste vynikající učitel a velmi velkorysý pro výuku toho, co víte. Gratulujeme a děkujeme.
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
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
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í.
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.
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í 🙂
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é.
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
Mohl byste zveřejnit příspěvek o Turingově stroji?
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 🙂
Páni, moc vám děkuji, jaké dobré vysvětlení.
pozdravy
Moc děkuji Allane 🙂 jde
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.
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
V roce 2018 se učím programovat ano nebo ano, děkuji
Jsem rád 🙂 zkuste to !! pozdravy
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ů.
Díky Guillermo 🙂 No doufám, že najdete zajímavé věci i v následujících příspěvcích 🙂 Zdravím
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 ..
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í
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.
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ělat2^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 🙂
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.
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.
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 🙂
Díky, myslím, že bych s tím měl být trpělivý, heh heh.
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
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
: Nebo mistrovské vysvětlení! Znal jsem část konceptů, ale z tohoto příspěvku mám spoustu nových poznatků
Děkuji moc Victor 🙂 jak dobré, že článek může pomoci, pozdravy
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ý.
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í 🙂
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é.