Valitettavasti olen nähnyt, että monet eivät halua oppia ohjelmoimaan tätä vuotta 2018, mutta vaikka olisin vain lukenut artículo etupäätä henkilö ja pystyy hetken kuluttua lähettämään sitoumuksen ilmaiseen ohjelmistoprojektiin, olisin tyytyväinen työhöni 🙂
Niille, jotka rakastavat tietoturvaa, lupaan teille, että seuraava on viesti turvallisuustehtävistä, joten kaikki ovat onnellisia, jos joku haluaa oppia jotain muuta (kuten git, palvelimen hallinta tai en tiedä: p), tai kommentoida muuta aihetta johon ei voida vastata yksinkertaisella tavalla kommenttikentässä, kerro minulle ja näemme kuinka voimme tehdä sen 😉
No, nyt kun menemme asiaamme, aiemmin puhuimme kirjoittamisesta ja että tämä liittyi tapaan, jolla tallennamme muuttujamme ohjelmassa, nyt tarkastelemme hieman mitä sisällä tapahtuu ja toivottavasti se voi olla tarpeeksi selkeä.
Bittiä
Luulen, että tämä on aihe, jota kosketan aina kirjoittaessani ohjelmoinnista, se on varmasti jotain, joka kiehtoo minua ja joka on auttanut minua ymmärtämään monia asioita. Yritän nyt selittää vähän, miten he ovat, miten heitä luetaan ja mihin ne ovat 🙂
Ajattele valokytkintä, kun piiri on suljettu, meillä on 0
ruudulla, kun vaihdamme kytkimen asentoa, koska a 1
🙂 yksinkertainen, eikö olekin?
Nyt a 0
ja 1
Ne voivat tarkoittaa monia asioita, kaikki riippuu luovuudesta, jolla otat sen. Oletan, että haluan tietää, onko joku menossa pohjoiseen vai etelään, 1
voi tarkoittaa pohjoista ja 0
, sur 🙂 sanotaan, että haluan tietää, onko joku mies vai nainen, 1
se voi olla mies ja 0
, nainen 🙂. Nyt haluan tietää, onko tämä henkilö nuori vai vanha (> 22), 0
voi tarkoittaa nuoria ja 1
, korkeampi. Kuvitellaan jatkuvasti ... Onko sinulla lemmikkejä? 1
Sanoisin kyllä, kun 0
Sanoisin ei Nyt haluan sinun lukevan seuraavan rivin kanssani:
1001
Tämä on lyhyt tapa sanoa ...
Una jóven mujer de no más de 22 años se dirige al norte acompañada de su mascota.
mikä on hyvin erilainen kuin:
0110
o Un hombre con más de 22 años de edad se dirige solo hacia el sur.
Tavua
Mennään nyt askeleen pidemmälle, opitaan kuinka tavuja luetaan. Tavu on 8 bitin sarja, joka luetaan oikealta vasemmalle ja kukin 1
edustaa voimaa 2
korotettu n
Donde n
on kärjen sijainti. Koska se kuulostaa kiinalaiselta, laitetaan pieni esimerkki 🙂
01001011
Meillä on tämä tavu, nyt aiomme siirtyä oikealta vasemmalle (<-) aion laittaa ne ylhäältä alas voidakseni kirjoittaa niiden merkityksen:
1
: terä, kun se on paikallaan 0
osoittaa, että seuraavat 2 on nostettu nollaan tai 2^0
. Tämä tiedämme hyvin 1
.
1
: toinen bitti, nyt asento 1
: 2^1
mikä on sama kuin sanominen 2
0
: kolmas bitti ... tämän pitäisi olla 2^2
, mutta koska se ei ole päällä, aiomme jättää sen päälle 0
1
: neljäs bitti, 2^3
u 8
🙂
0
: sama kuin 0
0
: muu 0
1
: nyt olemme sisään 2^6
o 64
ja lopuksi 0
, tiedämme jo mitä se tarkoittaa 🙂 nyt aiomme lisätä tulokset ja verrata niitä seuraavaan taulukkoon 🙂 Meillä on 75
joten etsimme sitä sarakkeesta Desimaali ja näemme, mikä näkyy Char
Meillä on yksi K
!! Onnittelut, tiedät jo kuinka lukea binäärisenä 🙂 Mutta kaikkein sagakaimmat ovat huomanneet, että olemme saaneet myös desimaaliluvun ja että sillä on raja (kun kaikki arvot ovat 1
) Tämä raja löytyy lukumäärästä 255
.
sana
Nyt useampi kuin yksi kertoo minulle, mutta entä jos tarvitsen numeron, joka on suurempi kuin 255
? tai mistä löydän muita merkkejä kuten japanilaiset? No, vastaus on yksinkertainen, kootaan yhteen 2 bytes
. Nyt kun meillä on kaksi, mahdollinen yhdistelmien määrä on 2^16
o 65536
mahdolliset tulokset, kuten 0
on yksi niistä, suurin mahdollinen on 65535
. Soittaako tämä numero kenellekään kelloa? Muistatko enimmäismäärän portteja linux-järjestelmässä? Jätän heille kotitehtävät 😉
Kaksinkertainen sana ja nelisana
Matemaattisemmaksi on olemassa myös erityisiä muotoja, kaksinkertainen sana sisältää, kuten monet ovat jo kuvitelleet 2 word
o 4 bytes
(o 32 bits
) tietoa, sama kuin sanomalla:
11111111111111111111111111111111
ja 0
a 4 294 967 295
Tässä vaiheessa monet ihmettelevät, mitä tapahtuu negatiivisilla luvuilla, toisin sanoen jossain niitä on harkittava, eikö? Negatiivisen luvun tallentamiseksi prosessorikehittäjät päättivät käyttää ensimmäistä vasemman bitin merkkiarvona. Tämä tarkoittaa, että jos ensimmäinen bitti on 0
puhumme positiivisesta luvusta, mutta jos on 1
meillä on negatiivinen. Katso nyt, miksi bitit ovat niin erikoisia, että ne voivat olla mitä haluat you
Mutta tämä jättää meille tietysti yhden aseman vähemmän kertolaskun suorittamiseksi! Joten meidän0
a 4 294 967 295
tulee:
-2,147,483,648
a +2,147,483,647
Nyt monilla meistä on jo 64 bits
, ja tämä on a: n arvo nelisana, arvot voivat vaihdella 0
a 18 446 744 073 709 551 615
. Se on iso numero 🙂
Miksi 8-bittinen?
Tätä useampia kuin yksi saattaa miettiä, ja vastaus on laitteistossa. Alusta alkaen prosessorit tarvitsivat tietoja voidakseen suorittaa toimintoja. Tiedot tallennetaan tietokoneen muistiin, ja aina kun prosessori sitä tarvitsee, se käyttää dataväyliä saadakseen sen. Muinaisina aikoina nämä väylät pystyivät kommunikoimaan enintään 8 bittiä sykliä kohti, mikä tarkoittaa, että suurin ja tehokkain tapa siirtää dataa oli ryhmittää 8 bittiä ja lähettää ne prosessorille.
Ajan myötä tähän päivään asti prosessorit ovat kehittäneet kyvyn siirtää 16 bittiä, 32 bittiä ja… 64 bittiä.
Mitä tekemistä sillä on kirjoittamisen kanssa?
Olemme nyt siinä osassa, jossa kaikella on järkeä 🙂 Kirjoitus on ominaisuus, jota ohjelmointikielet käyttävät näiden muistitilojen nimeämiseen. Kaikilla muuttujilla on vastaavuus yhdessä tällaisista tiedoista riippumatta siitä, mitä niitä kutsutaan. Nämä tunnetaan nimellä primitiiviset tietotyypitJokaisella voimakkaasti kirjoitetulla kielellä on käsitys näistä arvoista ja niiden edustamasta määrästä. Esimerkiksi C: ssä meillä on kirjasto limits.h
joka osoittaa meille primitiivisten arvojen suurimman ja pienimmän määrän.
Katsotaanpa, mitä tapahtuu, jos yritämme rikkoa yhtä arvoista:
Oikealla meillä on tiedoston arvot limits.h
ja vasemmalla olemme ottaneet yhden näistä arvoista (unsigned short int
) ja olemme antaneet numeron, joka on suurempi kuin vastaava. Tämän seurauksena kääntäjä varoittaa meitä siitä, että käytämme muistia väärin, koska 66666
ei sovi binaarimuodossa 65535
. Tämä johtaa meidät oppituntiin vuonna suorituskyky kun ohjelmoimme, jos arvo ei tule kasvamaan paljon ajan myötä tai jos et vaadi yhtä suuria arvoja kuin kaksinkertainen o nelisanaOikean tyypin käyttö vähentää CPU: n pyytämän muistin määrää, mikä tarkoittaa suurempaa nopeutta saada tietoja, jos se on hyvin laskettu.
Tulkin puolella tämä on helpompaa implisiittiset konversiot. CMääritämme muuttujan kielillä, kuten javascript tai Python, tulkin tehtävänä on ymmärtää minkä tyyppinen se on, ja varata riittävästi muistitilaa toimintojen suorittamiseen. Katsotaanpa yksinkertainen esimerkki 🙂
Kuten näette, meidän ei tarvitse selittää python-tulkille muuttujamme tyyppiä, koska se huolehtii tyypin määrittämisestä ja sen tallentamisesta muistiin 🙂
Tunne muuttujat
Tämä riippuu käyttämästäsi kielestä ja toteutuksen tyypistä, mutta ensimmäinen vaihe ohjelmoida on oppia muuttujat, joita voit käyttää use Kun ymmärrät muuttujat, pystyt pystymään käyttämään niitä tehokkaasti ja loogisesti tietojen tallentamiseen (toimitetaan käyttäjän tai järjestelmän kautta). Tämä on ensimmäinen askel ohjelmointitikkailla, ja toivottavasti tämän artikkelin lukemisen jälkeen saat paremman käsityksen siitä, miten tietokoneesi toimii ja miten se tallentaa tietoja. Se on kanssani seuraavaan artikkeliin asti, muista jättää kommenttisi nähdäksesi, onko sinun vahvistettava tai kommentoitava tiettyä kohtaa. Kippis
Hyvin kirjoitettu, ytimekäs ja selkeä, samalla mielenkiintoinen kaikille yleisöille. Hyvää työtä.
Paljon kiitoksia, terveiset 🙂
Suuri selitys. Olet kone.
Kiitos
Erittäin hyvin selitetty kiitos
Kiitos, että luet sen kokonaan 🙂
Erinomainen, kiitos panoksesta. Binaariongelmaa hyödyntämällä on mahdollista, että voit antaa meille luokan IP, aliverkon jne. Ymmärrän, että se ei ole ohjelmointikysymys, mutta asian hyvä selitys on aina ollut vireillä.
Jälleen kiitos selityksestäsi
Hei Diego, se voidaan tehdä 🙂 kertoa totuus, en ole myöskään mennyt aiheeseen paljon, mutta ei ole parempaa tapaa tutkia kuin etsimällä jotain jakamaan siitä artikkelista 🙂 Jätämme sen luetteloon, koska seuraavassa viestissä on jo aihe ja se käsittelee kovettumista. Terveisiä 🙂
Olet erinomainen opettaja ja erittäin antelias opettaaksesi mitä tiedät. Onnittelut ja kiitos.
Paljon kiitoksia Pedro 🙂 Etsin edelleen opetuspaikkoja, valitettavasti täällä Perussa on vaikeaa, kun sinulla on vain tekninen ammattitutkinto, joten nyt tarkastelen mahdollisuutta jatkaa yliopisto-opintojani täällä tai missä voin tai jopa hakea maisteriksi ulkomaalainen, joka tietää, ehkä pian jotain sellaista voidaan antaa 🙂 mutta opetus on ehdottomasti jotain, joka tekee päivästäni 🙂 Terveisiä
En ollut lukenut parempaa selitystä aiheesta, ensimmäinen esimerkki on loistava
vaikka en ollut kuullut tuota sanaa (kuten 16-bittisiä muuttujia), kaksoissanaa tai nelisanaa
riippumatta siitä, että "olen jo ohjelmoinut", viestit ovat mielenkiintoisia. Jos ongelmia ilmenee, postin on käytettävä C: tä (rajoitukset.h) muuttujien koon esimerkkinä. C: llä on vähiten olemassa olevaa spesifikaatiota
Hei jotain 🙂 kiitos paljon, keksin esimerkin matkalla 😛, koska se on varmasti tunnettua tietoa niille, jotka ovat lukeneet vähän Assembly-tiedostoa, ja prosessori ymmärtää sen. 🙂 hahaha ei todellakaan ole kovin spesifinen, mutta mielestäni se on johtuen siitä, että siirrettävyys ja sen tukemat erilaiset arkkitehtuurit ovat olleet niin vaihtelevia, että C: n on mukautettava jokainen prosessorityyppi ollakseen todella kannettava 🙂
Terveisiä ja kiitoksia jakamisesta.
Olisi mielenkiintoista, jos tämä oppaiden sarja perustuisi ruosteeseen, mielestäni se on yksi mielenkiintoisimmista kielistä, joita kehitetään tänään.
Olen hänen takanaan, mutta tiedän, että se on vaikea kieli, mutta jolla on suuri tulevaisuus ...
Odotan innolla seuraavia artikkeleitasi, ne ovat todella mielenkiintoisia.
Tervehdys.
Hei Sergio, se olisi varmasti mielenkiintoista, olen kuullut, että GNOME aikoo toteuttaa Rustin ohjelmistopaketissaan, en ole vielä nähnyt heidän aikeitaan, mutta siirtyminen on tulossa.
Kielten osalta olen itse vielä oppimassa C: tä, haluan pystyä aloittamaan kehityksen ytimessä seuraavien kuukausien aikana, ja haluan oppia muutama kieli perusteellisesti ennen kuin aloitan uusien kielten tarkastelun, mutta voin ehdottomasti etsiä jotain mielenkiintoista ja tehdä muutamia esimerkkejä Rustissa, koska sen dokumentaatio näyttää melko hyvältä yksin.
Terveisiä ja kiitoksia jakamisesta 🙂
Erittäin hyvät selitykset sekä tässä että edellisessä artikkelissa. Toivon, että jatkat tätä aihetta, joka on mielestäni erittäin mielenkiintoinen.
Hei David, toivon myös voivani jatkaa kirjoittamista ja erityisesti motivoida ihmisiä osallistumaan ilmaisten ohjelmistojen kanssa, projekteja ja tarpeita on nyt niin paljon, että muutaman ylimääräisen käden kehittäminen olisi hienoa 🙂
terveiset
Voisitko kirjoittaa viestin Turingin koneesta?
Hei Mart 🙂 Luulen, että joissakin kommenteissa olemme koskettaneet sitä aiemmin, eikö? Voin varmasti koota jotain mielenkiintoista aiheesta 🙂 Katsotaanpa, mitä voi tulla ulos. Terveisiä ja kiitoksia kaikkien artikkeleiden lukemisesta ensimmäisestä päivästä päivään asti olen aina nähnyt sinut melko kiinnostuneena 🙂
Vau, kiitos paljon kuinka hyvä selitys.
terveiset
Paljon kiitoksia Allan 🙂 terveisin
Luin edellisen viestisi! Paljon kiitoksia selityksestä, vaikka luulen, etten koskaan saa loppuun ymmärtämään sanaa.
Hei Ramon 🙂 kiitos paljon molempien lukemisesta. Jos siitä on mitään hyötyä, «sana» on tavun kehitys, se on kuin prosessorit, ennen kuin 8-bittiä, 16-bittiä jne. Oli ... tämä johtuu siitä, että joka kerta tarvitsemme enemmän tilaa prosessointiin ja paremman nopeuden tai voima ... 'sana' syntyi, koska 'tavun' tila jäi alle, ja sama 'kaksinkertaisen' ja 'nelosen' sanan kanssa 🙂 se on luonnollinen evoluutio, joka saa meidät lisäämään voimaa ja tilaa kehityksen jatkamiseksi 🙂
terveiset
Tänä vuonna 2018 opin ohjelmoimaan kyllä tai kyllä, kiitos
Olen iloinen, yritä kovasti! Kippis
Paljon kiitoksia, jatka sitä. Tiedän jo kuinka ohjelmoida, mutta odotan opetustasi, että itseopettama ohjelmointi on täynnä huonoja käytäntöjä.
Kiitos Guillermo 🙂 No, toivottavasti löydät mielenkiintoisia asioita myös seuraavista viesteistä 🙂 Terveisiä
Yksinkertainen selitys on aina paras .. erinomainen ..
Ehdotan git ... ohjelmoijille se on perusasetusta, kun haluat työskennellä tiiminä ja järjestää työsi .. versiot ..
Hyvin totta Edgar, yritän lähettää siitä sisältöä, vaikka on melko vaikea sanoa jotain uutta, koska git-dokumentaatio on jo runsaasti ja useita asioita on jo käännetty useille kielille. Näen mitä voin tehdä, terveisiä ja kiitoksia jakamisesta
Hei, vastaako numero 0-18 446-bittistä desimaaliarvoa vai viittaako se toiseen arvoon? No, lasketaan 744 ^ 073: n teho, tulos on: 709 551.
Hei Tiririri, mielestäni sinulla on pyöristysongelma, voit yrittää käyttää komentoa
bc
? on ohjelmointikieli, joka on suunniteltu mahdollisimman tarkaksi, kun sen sisällä on vain tehtävä2^64
Ehkä se ratkaisee sen. Kerro minulle, miten meni, terveisiä. Todellinen arvo on 18, mutta vähennämme 446, koska 744 lasketaan mahdolliseksi arvoksi 🙂
Kiitos, laskin sen verkkolaskimella (jonka löysin netistä (https://es.calcuworld.com/calculadoras-matematicas/potencias/) ja se oli tulos, jonka se antoi minulle.
Ja kyllä, olen jo kokeillut bc-komentoa, ja se antaa minulle tosiasiallisesti arvon, jonka kirjoitit muistiin.
Hei jälleen, kuva, jossa viitataan rajoituksiin. H-kirjasto, on hyvin pieni eikä sitä voi lukea (ainakaan en voinut lukea sitä, koska näen, että kaikki tekivät, näyttää siltä), ja koska en ymmärrä sitä, en enää jatka käsittelyssä. En tiedä, voisitko muuttaa sitä, toivottavasti en häirinnyt sinua siinä.
Voit kokeilla mobiiliversiota, ne näyttävät hieman selkeämmiltä, se on wordpress-teema: / Toisaalta kaikki C-otsikot löytyvät / usr / include / -kansiosta, tässä tapauksessa voit halutessasi lukea sen suoraan, jos se on helpompaa 🙂 Yritän ladata isomman kuvan nähdäksesi, auttaako se 🙂
Kiitos, mielestäni minun pitäisi olla kärsivällinen tässä, heh heh.
Kiitos artikkelista, koska nyt ymmärsin hieman paremmin kielen muuttujat ja esitysalueen, mutta nyt mielestäni minun pitäisi alkaa käyttää kirjastoa "stdint.h", koska he suosittelevat sen käyttöä ohjelmoidessaan c: ssä, koska Minulle oli opetettu vanhaa koulua, koska muisti oli kallista, ja käytetyn suhteen oli oltava varovainen
Katekyoa ei ole, on varmasti parempi käyttää tavallista kirjastoa, mutta voin vakuuttaa teille, että on parempi tietää, mikä erottaa uint_least8_t uint_fast8_t: stä ja joka saavutetaan tuntemalla primitiiviset tietotyypit, mikä oli viestin tavoite kiitos kommentista ja artikkelin lukemisesta, terveisiä
: Tai mestarillinen selitys! Tiesin osan käsitteistä, mutta saan paljon uutta tietoa tästä viestistä
Paljon kiitoksia Victor 🙂 kuinka hyvä, että artikkelista voi olla apua, terveisiä
Pidin todella Pythonista ohjelmoinnin helpottamiseksi, näin kurssin http://zetcode.com/gui/pyqt4/ Rakastin viimeistä tetristä: http://zetcode.com/gui/pyqt4/thetetrisgame/
Tämä tetris, jonka retusoin kesällä, laitoin pisteitä, moninpeliä ja musiikkia vähitellen, mutta erittäin viihdyttävää.
Hei Guille, on varmasti erittäin viihdyttävää nähdä, että työskentelemäsi ohjelmisto kasvaa vähitellen 🙂 se on vertaansa vailla oleva kokemus, ja vielä enemmän kun joku pitää kehitettävääsi hyödyllisenä eli toisesta maailmasta 😀 kiitos paljon jakamisesta 🙂
Sen, jonka tein, olen ladannut (30 Mt musiikkia varten) http://guillermo.molleda.com/Tetris9.7z
Sinun on määritettävä jokaiselle pelaajalle erilainen aloitusnopeus tai jos aloitat pisteet uudelleen uuden pelin jälkeen,… ja kahden tyttäreni kanssa on kolme pelaajaa pelaamaan kanssani. Se aiheuttaa jopa riippuvuutta.