Variabelen 101: uw computer kennen

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 12^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

Afbeeldingsresultaat voor ascii table

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:

Eigen. Christopher Diaz Riveros

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 🙂

Eigen. Christopher Diaz Riveros

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


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   Luis zei

    Goed geschreven, beknopt en duidelijk, en tegelijkertijd interessant voor alle doelgroepen. Goed werk.

    1.    Chris ADR zei

      Hartelijk dank, groeten 🙂

  2.   John Jezus zei

    Geweldige uitleg. Je bent een machine.

    1.    Chris ADR zei

      Bedankt

  3.   Ruben zei

    Heel goed uitgelegd, bedankt

    1.    Chris ADR zei

      Bedankt voor het volledig lezen 🙂

  4.   Diego zei

    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

    1.    Chris ADR zei

      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 🙂

  5.   Pedro zei

    Je bent een uitstekende leraar en erg gul om te onderwijzen wat je weet. Gefeliciteerd en bedankt.

    1.    Chris ADR zei

      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

  6.   iets zei

    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

    1.    Chris ADR zei

      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.

  7.   Sergio zei

    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.

    1.    Chris ADR zei

      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 🙂

  8.   David zei

    Zeer goede uitleg, zowel in dit artikel als in het vorige. Ik hoop dat je doorgaat met dit thema dat ik erg interessant vind.

    1.    Chris ADR zei

      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

  9.   Markt zei

    Kun je een bericht plaatsen over de Turing-machine?

    1.    Chris ADR zei

      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 🙂

  10.   ALLEN LARA zei

    Wauw, heel erg bedankt wat een goede uitleg.

    groeten

    1.    Chris ADR zei

      Heel erg bedankt Allan 🙂 groeten

  11.   ramon hidalgo zei

    Ik heb je vorige bericht gelezen! Hartelijk dank voor de uitleg, hoewel ik denk dat ik het woord nooit zal begrijpen.

    1.    Chris ADR zei

      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

  12.   anoniem zei

    In 2018 leer ik ja of ja programmeren, bedankt

    1.    Chris ADR zei

      Ik ben blij 🙂 probeer hard !! vriendelijke groeten

  13.   Guillermo zei

    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.

    1.    Chris ADR zei

      Bedankt Guillermo 🙂 Ik hoop dat je ook interessante dingen vindt in de volgende berichten 🙂 Groeten

  14.   Edgar zei

    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 ..

    1.    Chris ADR zei

      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

  15.   Tiiriri zei

    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.

    1.    Chris ADR zei

      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 doen 2^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 🙂

      1.    Tiiriri zei

        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.

  16.   Tiiriri zei

    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.

    1.    Chris ADR zei

      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 🙂

      1.    Tiiriri zei

        Bedankt, ik denk dat ik hier geduld mee moet hebben, heh heh.

  17.   Katekyo zei

    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

    1.    Chris ADR zei

      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

  18.   overwinnaar zei

    : Of een meesterlijke uitleg! Ik kende een deel van de concepten, maar ik krijg veel nieuwe kennis van dit bericht

    1.    Chris ADR zei

      Heel erg bedankt Victor 🙂 hoe goed dat het artikel kan helpen, groeten

  19.   Guille zei

    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.

    1.    Chris ADR zei

      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 🙂

      1.    Guille zei

        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.