Helaas heb ik gezien dat niet veel mensen dit 2018 willen leren programmeren 🙁 maar zelfs als ik alleen mijn artículoenvio anterieure een persoon en na een korte tijd in staat is om een commitment te sturen naar een gratis softwareproject, zou ik tevreden zijn met mijn werk 🙂
Voor degenen die van beveiliging houden, beloof ik je dat het volgende een bericht over beveiliging zal zijn 🙂 zodat iedereen blij is, als iemand iets anders wil leren (zoals git, serverbeheer of wat weet ik: p), of om commentaar te geven over een ander onderwerp dat niet op een eenvoudige manier kan worden beantwoord in het opmerkingenveld, laat het me weten en we kijken hoe we het kunnen aanpakken 😉
Welnu, als we nu naar ons ding gaan, eerder hadden we het over typen, en dat dit te maken had met de manier waarop we onze variabelen in een programma opslaan, nu gaan we een beetje kijken naar wat er binnenin gebeurt en hopelijk kan duidelijk genoeg zijn.
Bits
Ik denk dat dit een onderwerp is dat ik altijd aanraak als ik schrijf over programmeren, het is zeker iets dat me fascineert en dat me heeft geholpen veel dingen te begrijpen, nu zal ik proberen een beetje uit te leggen hoe ze zijn, hoe ze worden gelezen en waar ze voor zijn 🙂
Denk aan een lichtschakelaar, als het circuit gesloten is, hebben we een 0
op het scherm, wanneer we de positie van de schakelaar veranderen, omdat a 1
🙂 eenvoudig is het niet?
Nu een 0
en een 1
ze kunnen veel dingen betekenen, het hangt allemaal af van de creativiteit waarmee je het neemt, stel dat ik wil weten of iemand naar het noorden of het zuiden gaat, 1
kan noorden en betekenen 0
, laten we zeggen dat ik wil weten of iemand een man of een vrouw is, 1
het kan een man zijn en 0
, vrouw 🙂. Nu wil ik weten of deze persoon jong of oud is (> 22), 0
kan jong en betekenen 1
, hoger. Laten we ons blijven voorstellen ... Heeft u huisdieren? 1
Ik zou weleens ja zeggen 0
Ik zou nee zeggen Nu wil ik dat je de volgende regel met mij voorleest:
1001
Dit is de korte manier om te zeggen ...
Una jóven mujer de no más de 22 años se dirige al norte acompañada de su mascota.
wat heel anders is dan:
0110
o Un hombre con más de 22 años de edad se dirige solo hacia el sur.
Bytes
Laten we nu een stap verder gaan, laten we leren hoe we bytes moeten lezen. Een byte is de reeks van 8 bits, die van rechts naar links en elk worden gelezen 1
vertegenwoordigt een kracht van 2
verheven tot de n
waar n
is de bitpositie. Laten we, aangezien het klinkt als Chinees, een klein voorbeeld geven 🙂
01001011
We hebben deze byte, nu gaan we van rechts naar links (<-) Ik ga ze van boven naar beneden plaatsen om hun betekenis te kunnen schrijven:
1
: het bit in positie 0
geeft aan dat we de volgende 2 hebben verhoogd tot nul of 2^0
. Deze put die we kennen is gelijk aan 1
.
1
: het tweede bit, nu de positie 1
: 2^1
wat hetzelfde is als zeggen 2
0
: derde deel ... dit zou moeten zijn 2^2
, maar aangezien het niet aan staat, laten we het aan 0
1
: vierde bit, 2^3
u 8
🙂
0
: hetzelfde als 0
0
: andere 0
1
: nu zijn we binnen 2^6
o 64
en tot slot 0
, we weten al wat het betekent 🙂 nu gaan we onze resultaten toevoegen en vergelijken met de volgende tabel 🙂 We hebben een 75
dus laten we ernaar zoeken in de kolom Decimaal en we zullen zien wat er in verschijnt Verkolen
We hebben er een K
!! Gefeliciteerd, je weet al hoe je binair moet lezen 🙂 Maar de meest scherpzinnige heeft misschien gemerkt dat we ook een decimaal getal hebben verkregen, en dat het een limiet heeft (als alle waarden 1
) Die limiet is te vinden in het aantal 255
.
Woord
Nu zullen er meer dan één het mij vertellen, maar wat als ik een groter getal dan nodig heb 255
? of waar kan ik andere karakters vinden, zoals de Japanners? Nou, het antwoord is simpel, laten we het samen stellen 2 bytes
. Nu we er twee hebben, is het mogelijke aantal combinaties dat we hebben 2^16
o 65536
mogelijke uitkomsten, zoals 0
is er een van, het maximaal mogelijke is 65535
. Doet dat nummer een belletje rinkelen? Herinner je je het maximale aantal poorten op een linux-systeem? Ik laat ze huiswerk achter 😉
Dubbel woord en viervoudig woord
Voor de meer wiskundige zijn er ook specifieke formaten, dubbel woord bevatten, zoals velen zich misschien al hebben voorgesteld 2 word
o 4 bytes
(o 32 bits
) van informatie, hetzelfde als zeggen:
11111111111111111111111111111111
of 0
a 4 294 967 295
Op dit punt zullen velen zich afvragen wat er gebeurt met negatieve getallen, dat wil zeggen, ergens moeten ze worden overwogen, toch? Om een negatief getal te kunnen opslaan, kozen de processorontwikkelaars ervoor om het eerste bit aan de linkerkant als tekenwaarde in te nemen. Dit betekent dat als het eerste bit is 0
we hebben het over een positief getal, maar als dat zo is 1
we hebben een negatief punt. Kijk nu waarom de bits zo speciaal zijn, ze kunnen zijn wat je maar wilt 😀
Maar dit laat ons duidelijk een positie minder over om de vermenigvuldiging uit te voeren! Zo onze0
a 4 294 967 295
wordt:
-2,147,483,648
a +2,147,483,647
Nu hebben velen van ons dat al gedaan 64 bits
, en dit is de waarde van a quad woordkunnen we waarden hebben variërend van 0
a 18 446 744 073 709 551 615
. Dat is een groot aantal 🙂
Waarom 8 bit?
Dit is iets dat meer dan één zal afvragen, en het antwoord zit in de hardware. Vanaf het begin hadden processors gegevens nodig om bewerkingen te kunnen uitvoeren. De gegevens worden opgeslagen in het geheugen van de computer en elke keer dat de processor dit nodig heeft, gebruikt hij de databussen om ze op te halen. In de oudheid konden deze bussen maximaal 8 bits per cyclus communiceren, dit betekent dat de maximale en meest efficiënte manier om gegevens te verplaatsen was, 8 bits te groeperen en naar de processor te sturen.
Met het verstrijken van de tijd, tot op heden, hebben processors de mogelijkheid ontwikkeld om 16 bits, 32 bits en ... 64 bits te verplaatsen.
Wat heeft het met typen te maken?
We zijn nu op het punt waar het allemaal logisch is 🙂 Typen is een eigenschap die programmeertalen gebruiken om deze geheugenruimtes een naam te geven. Alle variabelen hebben hun tegenhanger in een van deze soorten gegevens, ongeacht hoe ze worden genoemd. Deze staan bekend als primitieve gegevenstypenElke sterk getypeerde taal heeft zijn voorstelling van deze waarden, en de hoeveelheid die ze vertegenwoordigen. In C hebben we bijvoorbeeld de bibliotheek limits.h
die ons het maximum en minimum aantal primitieve waarden laat zien.
Laten we eens kijken wat er gebeurt als we proberen een van de waarden te breken:
Aan de rechterkant hebben we de waarden van het bestand limits.h
en aan de linkerkant hebben we een van deze waarden genomen (unsigned short int
) en we hebben een nummer toegewezen dat hoger is dan het overeenkomstige nummer. Als gevolg hiervan waarschuwt de compiler ons dat we geheugen misbruiken omdat de binaire vorm van 66666
past niet in de binaire vorm van 65535
. Dit leidt ons tot een les in prestatie wanneer we programmeren, als uw waarde in de loop van de tijd niet veel zal groeien, of als u niet zo grote waarden nodig hebt als die van een verdubbelen o quad woordHet gebruik van het juiste type vermindert de hoeveelheid geheugen die door de CPU wordt gevraagd, wat een hogere snelheid voor het ophalen van gegevens impliceert als het goed wordt berekend.
Aan de kant van de tolk is dit gemakkelijker vanwege de impliciete conversies. CAls we een variabele definiëren in talen zoals javascript of Python, is de interpreter verantwoordelijk voor het begrijpen van het type en het toewijzen van voldoende geheugenruimte om de bewerkingen uit te voeren. Laten we een eenvoudig voorbeeld bekijken 🙂
Zoals je kunt zien, hoeven we de Python-interpreter het type van onze variabele niet uit te leggen, omdat deze verantwoordelijk is voor het toewijzen van een type en het opslaan in het geheugen 🙂
Ken uw variabelen
Dit hangt af van de taal en het type implementatie dat u gaat gebruiken, maar de eerste stap om te kunnen programmeren is door de variabelen te leren die u kunt gebruiken 🙂 Als u de variabelen eenmaal begrijpt, zult u in staat zijn om om ze efficiënt en logisch te gebruiken om informatie op te slaan (verstrekt door een gebruiker of door het systeem). Dit is de eerste stap op de programmeerladder en hopelijk heb je na het lezen van dit artikel een beter begrip van hoe je computer werkt en hoe hij informatie opslaat. Het zal bij mij zijn tot het volgende artikel, vergeet niet om uw opmerkingen achter te laten om te zien of u een specifiek punt moet bekrachtigen of erop moet reageren. vriendelijke groeten
Goed geschreven, beknopt en duidelijk, en tegelijkertijd interessant voor alle doelgroepen. Goed werk.
Hartelijk dank, groeten 🙂
Geweldige uitleg. Je bent een machine.
Bedankt
Heel goed uitgelegd, bedankt
Bedankt voor het volledig lezen 🙂
Uitstekend, bedankt voor de input. En door gebruik te maken van het binaire probleem, is er de mogelijkheid dat u ons een IP-klasse, subnet, enz. Geeft. Ik begrijp dat het geen programmeerprobleem is, maar een goede uitleg van dat probleem is altijd in behandeling geweest.
Nogmaals bedankt voor uw uitleg
Hallo Diego, het kan 🙂 om de waarheid te zeggen, ik ben ook niet veel op het onderwerp ingegaan, maar er is geen betere manier om het te onderzoeken dan door te zoeken naar iets om erover te vertellen in een artikel 🙂 We laten het achter voor de lijst omdat de volgende post al een onderwerp heeft en het gaat over verharding. Groeten 🙂
Je bent een uitstekende leraar en erg gul om te onderwijzen wat je weet. Gefeliciteerd en bedankt.
Heel erg bedankt Pedro 🙂 Ik ben nog steeds op zoek naar plaatsen om les te geven, helaas is het hier in Peru moeilijk als je alleen een technische professionele opleiding hebt, dus nu kijk ik naar de mogelijkheid om mijn universitaire studies hier voort te zetten of waar ik kan of je zelfs aanmelden voor een masterdiploma in de buitenlander, wie weet, misschien wordt zoiets binnenkort gegeven 🙂 maar lesgeven is zeker iets dat mijn dag goed maakt 🙂 Groeten
Ik had geen betere uitleg van het onderwerp gelezen, het eerste voorbeeld is briljant
hoewel ik dat woord niet had gehoord (zoals 16-bits variabelen), dubbel woord of quad woord
ongeacht dat "ik al programmeer", de berichten zijn interessant. Als er een probleem is, moet de post C (limieten.h) gebruiken als een voorbeeld van de variabele grootten, C heeft de minst specifieke specificatie die er bestaat
Hallo iets 🙂 heel erg bedankt, ik kwam onderweg met het voorbeeld 😛 omdat het zeker gegevens bekend zijn voor degenen die een beetje Assembly hebben gelezen, en dat is wat de processor begrijpt 🙂 hahaha zeker C is niet erg specifiek, maar ik denk dat het komt door het feit dat de draagbaarheid en de verschillende architecturen die het ondersteunt zo gevarieerd zijn dat C elk type processor moet huisvesten om echt draagbaar draagbaar te zijn
Groeten en bedankt voor het delen.
Hoewel het interessant zou zijn als deze reeks tutorials gebaseerd zou zijn op roest, denk ik dat het een van de meest interessante talen is die vandaag worden ontwikkeld.
Ik sta achter hem, maar ik erken dat het een moeilijke taal is, maar met een geweldige toekomst ...
Ik kijk uit naar je volgende artikelen, ze zijn echt interessant.
Groeten.
Hallo Sergio, het zou zeker interessant zijn, ik heb gehoord dat GNOME van plan is Rust te implementeren in zijn reeks programma's, ik heb er nog niet de volledige omvang van gezien, maar er komt een migratie aan.
Wat betreft talen, ik ben persoonlijk nog steeds C aan het leren, ik wil de komende maanden kunnen beginnen met het ontwikkelen van de kernel, en ik geef er de voorkeur aan om een paar talen diepgaand te leren voordat ik nieuwe ga beoordelen, maar ik kan zoek beslist naar iets interessants en doe een paar voorbeelden in Rust, aangezien de documentatie er op zichzelf best goed uitziet.
Groeten en bedankt voor het delen 🙂
Zeer goede uitleg, zowel in dit artikel als in het vorige. Ik hoop dat je doorgaat met dit thema dat ik erg interessant vind.
Hallo David, ik hoop ook te kunnen blijven schrijven en vooral mensen te kunnen motiveren om deel te nemen met gratis software, er zijn zoveel projecten en behoeften nu dat het geweldig zou zijn om een paar extra handen te ontwikkelen 🙂
groeten
Kun je een bericht plaatsen over de Turing-machine?
Hallo Mart 🙂 Ik denk dat we het in een opmerking eerder hebben aangeraakt, toch? Ik weet zeker dat ik iets interessants over het onderwerp kan samenstellen 🙂 laten we kijken wat er uit kan komen. Groeten en bedankt voor het lezen van al mijn artikelen, vanaf de eerste dag tot vandaag heb ik je altijd heel geïnteresseerd gezien 🙂
Wauw, heel erg bedankt wat een goede uitleg.
groeten
Heel erg bedankt Allan 🙂 groeten
Ik heb je vorige bericht gelezen! Hartelijk dank voor de uitleg, hoewel ik denk dat ik het woord nooit zal begrijpen.
Hoi Ramon, heel erg bedankt voor het lezen van beide. Als het van enig nut is, is het «woord» de evolutie van een byte, het is zoals de processors, voordat er 8-bits waren, na 16-bits, enz ... dit is omdat we elke keer meer ruimte nodig hebben om proces en betere snelheid of kracht ... het 'woord' werd geboren omdat de ruimte van de 'byte' tekortschoot, en hetzelfde met het 'dubbele' en 'quad'-woord 🙂 het is de natuurlijke evolutie die ons kracht laat toevoegen en ruimte om verder te ontwikkelen 🙂
groeten
In 2018 leer ik ja of ja programmeren, bedankt
Ik ben blij 🙂 probeer hard !! vriendelijke groeten
Heel erg bedankt, ga zo door. Ik weet al hoe ik moet programmeren, maar ik wacht op je leringen, dat mijn autodidactische programmering vol slechte praktijken zit.
Bedankt Guillermo 🙂 Ik hoop dat je ook interessante dingen vindt in de volgende berichten 🙂 Groeten
Een simpele uitleg is altijd het beste .. uitstekend ..
Ik zou git aanraden ... voor programmeurs is het standaard als je als een team wilt werken en je werk op orde wilt brengen .. de versies ..
Echt waar Edgar, ik zal proberen er inhoud over te posten, hoewel het vrij moeilijk is om iets nieuws te zeggen omdat de git-documentatie al overvloedig is en verschillende dingen al in verschillende talen zijn vertaald. Ik zal zien wat ik kan doen, groeten en bedankt voor het delen
Hallo, komt het getal van 0 tot 18 overeen met de 446-bits decimale waarde of verwijst het naar een andere waarde? Nou, als ik de macht 744 ^ 073 bereken, krijg ik als resultaat: 709 551.
Hallo Tiririri, ik denk dat je een afrondingsprobleem hebt, je kunt proberen het commando te gebruiken
bc
? is een programmeertaal die is ontworpen om zo nauwkeurig mogelijk te zijn, eenmaal erin is het alleen nodig om te doen2^64
, misschien lost dat het op, laat me weten hoe het ging, groeten. De werkelijke waarde is 18, maar we trekken er 446 af omdat 744 telt als een mogelijke waarde 🙂
Bedankt, ik heb dat berekend met een energiecalculator die ik op het net vond (https://es.calcuworld.com/calculadoras-matematicas/potencias/) en dat was het resultaat dat het me gaf.
En ja, ik heb het bc-commando al geprobeerd en het geeft me effectief de waarde die je hebt opgeschreven.
Hallo nogmaals, de afbeelding waar je verwijst naar de limits.h bibliotheek is erg klein en kan niet worden gelezen (ik kon het tenminste niet lezen, omdat ik zie dat iedereen het deed, zo lijkt het), en omdat ik het niet begrijp Ik lees niet meer verder. Ik weet niet of je het zou kunnen veranderen, ik hoop dat ik je daarmee niet heb lastig gevallen.
Je kunt de mobiele versie proberen, die zien er wat duidelijker uit, het is een wordpress-thema: / aan de andere kant zijn alle C-headers te vinden in / usr / include /, in dit geval kun je ervoor kiezen om het direct te lezen als je het is gemakkelijker 🙂 Ik zal proberen een grotere afbeelding te uploaden om te zien of het helpt 🙂
Bedankt, ik denk dat ik hier geduld mee moet hebben, heh heh.
Bedankt voor het artikel, want nu begreep ik een beetje beter de variabelen en het representatiebereik van een taal en nu denk ik dat ik de bibliotheek "stdint.h" moet gaan gebruiken, aangezien ze deze aanbevelen om te gebruiken bij het programmeren in c sinds ik geleerd aan de oude school omdat het geheugen kostbaar was en men voorzichtig moest zijn met wat werd gebruikt
Er is geen Katekyo, het is zeker beter om de standaardbibliotheek te gebruiken, maar ik kan je verzekeren dat het beter is om te weten wat een uint_least8_t onderscheidt van een uint_fast8_t en dat wordt bereikt door de primitieve datatypes te kennen, wat het doel was van de post 🙂 Hartelijk dank voor de opmerking en voor het lezen van het artikel, groeten
: Of een meesterlijke uitleg! Ik kende een deel van de concepten, maar ik krijg veel nieuwe kennis van dit bericht
Heel erg bedankt Victor 🙂 hoe goed dat het artikel kan helpen, groeten
Ik vond Python erg leuk om het programmeren gemakkelijker te maken, ik zag een cursus in http://zetcode.com/gui/pyqt4/ Ik hield van de laatste tetris over: http://zetcode.com/gui/pyqt4/thetetrisgame/
Ik heb deze tetris tijdens een zomer geretoucheerd om punten, multiplayer en muziek beetje bij beetje, maar erg vermakelijk te maken.
Hallo Guille, het is zeker heel vermakelijk om de software waaraan je werkt beetje bij beetje te zien groeien 🙂 het is een onvergelijkbare ervaring, en nog meer als iemand vindt wat je aan het ontwikkelen bent, dat is uit een andere wereld 😀 heel erg bedankt om te delen 🙂
Degene die ik heb gedaan heb ik geüpload (30 MB voor de muziek) naar http://guillermo.molleda.com/Tetris9.7z
Je moet voor elke speler een andere beginsnelheid instellen of als je punten herstart na een nieuw spel,…, en er zijn drie spelers voor mijn twee dochters om met mij te spelen. Het is zelfs verslavend.