Değişkenler 101: Bilgisayarınızı Tanıyın

Maalesef pek çoğunun bu 2018'i programlamayı öğrenmek istemediğini gördüm 🙁 ama sadece önceki haber bir kişi ve kısa bir süre sonra özgür bir yazılım projesine taahhüt gönderebilir, işimden memnun olurum 🙂

Güvenliği sevenler için, size söz veriyorum, eğer biri başka bir şey öğrenmek isterse (git, sunucu yönetimi veya bilmiyorum gibi: p) veya başka bir konu hakkında yorum yapmak isterse, herkes mutlu olacak şekilde güvenlik görevleriyle ilgili bir yazı olacaktır. yorum kutusunda basit bir şekilde cevaplanamayan, bana bildirin ve nasıl çalışabileceğimizi görelim 😉

Pekala, şimdi işimize gidersek, daha önce yazmadan bahsetmiştik ve bunun değişkenlerimizi bir programa kaydetme şeklimizle ilgisi olduğunu, şimdi içeride olanların birazını gözden geçireceğiz ve umarım olabilir yeterince açık.

Bit

Sanırım bu, programlama hakkında yazarken her zaman dokunduğum bir konu, kesinlikle beni büyüleyen ve birçok şeyi anlamama yardımcı olan bir şey, şimdi nasıl olduklarını, nasıl okunduklarını ve ne için olduklarını biraz açıklamaya çalışacağım 🙂

Bir ışık anahtarı düşünün, devre kapandığında bir 0 ekran üzerinde, anahtarın konumunu değiştirdiğimizde, çünkü 1🙂 basit değil mi?

Şimdi bir 0 y un 1 Pek çok şey ifade edebilirler, her şey onu aldığınız yaratıcılığa bağlıdır, farz edin ki birinin kuzeye mi yoksa güneye mi gittiğini bilmek istiyorum. 1 kuzey anlamına gelebilir ve 0Elbette, birinin kadın mı erkek mi olduğunu bilmek istiyorum diyelim 1 o bir adam olabilir ve 0, kadın 🙂. Şimdi bu kişinin genç mi yaşlı mı (> 22) olup olmadığını bilmek istiyorum. 0 genç anlamına gelebilir ve 1, daha yüksek. Hayal etmeye devam edelim… Evcil hayvanınız var mı? 1 Evet derdim 0 Hayır derdim Şimdi şu satırı benimle birlikte okumanızı istiyorum:

1001

Bunu söylemenin kısa yolu ...

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

bu şundan çok farklıdır:

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

Bytes

Şimdi bir adım daha ileri gidelim, bayt okumayı öğrenelim. Bir bayt, sağdan sola ve her biri okunan 8 bitlik dizidir. 1 bir gücünü temsil eder 2 yükseltildi n nerede n bitin konumudur. Çince gibi göründüğü için küçük bir örnek verelim 🙂

01001011 Bu baytımız var, şimdi sağdan sola gideceğiz (<-) Anlamlarını yazabilmek için onları yukarıdan aşağıya koyacağım:

1: konumdayken bit 0 aşağıdaki 2 değerinin sıfıra yükseltildiğini veya 2^0. Bu iyi bildiğimiz, eşdeğerdir 1.

1: ikinci bit, şimdi konum 12^1 söylemekle aynı şey 2

0: üçüncü bit ... bu olmalı 2^2ama açık olmadığı için açık bırakacağız 0

1: dördüncü bit, 2^3 u 8 🙂

0: aynı 0

0: diğer 0

1: şimdi içerdeyiz 2^6 o 64

finalmente 0 , bunun ne anlama geldiğini zaten biliyoruz 🙂 şimdi sonuçlarımızı ekleyeceğiz ve aşağıdaki tabloyla karşılaştıracağız 🙂 Elimizde bir 75 öyleyse sütunda arayalım Ondalık ve neyin göründüğünü göreceğiz Char

Ascii tablosu için görsel sonucu

Bizde bir tane var K!! Tebrikler, ikili olarak okumayı zaten biliyorsunuz 🙂 Ama en akıllıca olanı da bir ondalık sayı elde ettiğimizi ve bunun bir sınırı olduğunu fark etmiş olabilir (tüm değerler 1) Bu sınır, numarada bulunur 255.

Word

Şimdi birden fazlası bana söyleyecek, ama ya daha büyük bir sayıya ihtiyacım olursa 255? veya Japonca gibi diğer karakterleri nerede bulabilirim? Cevap basit, hadi bir araya getirelim 2 bytes. Artık iki tane olduğuna göre, sahip olduğumuz olası kombinasyon sayısı 2^16 o 65536 gibi olası sonuçlar 0 bunlardan biri, mümkün olan maksimum 65535. Bu numara kimseyi çağrıştırıyor mu? Bir linux sistemindeki maksimum bağlantı noktası sayısını hatırlıyor musunuz? Onlara ödev bırakıyorum 😉

Çift kelime ve dört kelime

Daha matematiksel olanlar için belirli formatlar da vardır, çift ​​kelime birçoğunun zaten hayal etmiş olabileceği gibi 2 word o 4 bytes (o 32 bits) bilgi, demekle aynı:

11111111111111111111111111111111 için 0 a 4 294 967 295

Bu noktada birçok kişi negatif sayılarda ne olacağını merak edecek, yani bir yerde düşünülmesi gerekiyor, değil mi? Negatif bir sayıyı saklayabilmek için işlemci geliştiricileri soldaki ilk biti işaret değeri olarak işgal etmeyi seçtiler. Bu, eğer ilk bit ise 0 pozitif bir sayıdan bahsediyoruz ama eğer öyleyse 1 bir negatifimiz var. Şimdi bitlerin neden bu kadar özel olduğunu görün, istediğiniz her şey olabilirler 😀

Ama bu açıkça çarpma işlemini yapmak için bize bir tane daha az pozisyon bırakıyor! Böylece biz0 a 4 294 967 295 şu hale gelir:

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

Şimdi, çoğumuz zaten var 64 bitsve bu a'nın değeridir dört kelimearasında değişen değerlere sahip olabiliriz 0 a 18 446 744 073 709 551 615. Bu büyük bir sayı 🙂

Neden 8 bit?

Bu, birden fazla kişinin merak edeceği bir şey ve yanıtı donanımda. En başından beri, işlemcilerin işlemleri gerçekleştirebilmek için verilere ihtiyacı vardı. Veriler bilgisayarın belleğinde saklanır ve işlemci her ihtiyaç duyduğunda, onu elde etmek için veri yollarını kullanır. Eski zamanlarda, bu veri yolları döngü başına maksimum 8 bit iletişim kurabiliyordu, bu, verileri taşımanın maksimum ve en verimli yolunun 8 biti gruplamak ve işlemciye göndermek olduğu anlamına geliyordu.

Zaman geçtikçe, günümüze kadar işlemciler 16 bit, 32 bit ve… 64 bit taşıma yeteneğini geliştirdiler.

Yazmakla ne alakası var?

Şimdi her şeyin mantıklı olduğu kısımdayız 🙂 Yazma, programlama dillerinin bu bellek alanlarını adlandırmak için kullandığı bir özelliktir. Ne adlandırılırsa adlandırılsın, tüm değişkenlerin bu tür verilerden birinde karşılıkları vardır. Bunlar olarak bilinir ilkel veri türleriTipik olarak yazılmış her dil, bu değerler ve temsil ettikleri nicelik hakkında kendi anlayışına sahiptir. Örneğin C'de kütüphanemiz var limits.h bu bize maksimum ve minimum ilkel değerleri gösterir.

Değerlerden birini bozmaya çalışırsak ne olacağını görelim:

Kendi. Christopher Diaz Riveros

Sağ tarafta dosyanın değerleri var limits.h ve solda bu değerlerden birini aldık (unsigned short int) ve karşılık gelen sayıdan daha yüksek bir sayı atadık. Sonuç olarak derleyici, hafızayı kötüye kullandığımız konusunda bizi uyarır çünkü 66666 ikili biçimine sığamaz 65535. Bu bizi bir derse götürür performans programladığımızda, değeriniz zamanla fazla artmayacaksa veya bir değerinki kadar büyük değerlere ihtiyaç duymuyorsanız çift o dört kelimeDoğru türün kullanılması, CPU tarafından talep edilen bellek miktarını azaltır, bu da iyi hesaplanırsa daha yüksek bir veri alma hızı anlamına gelir.

Tercüman tarafında bu daha kolaydır, çünkü örtük dönüştürmeler. CJavascript veya Python gibi dillerde bir değişken tanımladığımızda, yorumlayıcı ne tür olduğunu anlamaktan ve işlemleri gerçekleştirmek için yeterli bellek alanını ayırmaktan sorumludur. Basit bir örnek görelim 🙂

Kendi. Christopher Diaz Riveros

Gördüğünüz gibi, python yorumlayıcısına değişkenimizin türünü açıklamak zorunda değiliz, çünkü bir tür atamaktan ve onu belleğe depolamaktan sorumludur 🙂

Değişkenlerinizi bilin

Bu, kullanacağınız dile ve uygulama türüne bağlıdır, ancak programlayabilmenin ilk adımı, kullanabileceğiniz değişkenleri öğrenmektir 🙂 Değişkenleri anladıktan sonra, bilgileri depolamak için onları verimli ve mantıklı bir şekilde kullanabilecek bir konumda olacaksınız (sağlanan bir kullanıcı veya sistem tarafından). Bu, programlama merdiveninin ilk adımıdır ve umarım bu makaleyi okuduktan sonra, bilgisayarınızın nasıl çalıştığını ve bilgileri nasıl depoladığını daha iyi anlayacaksınız. Bir sonraki makaleye kadar benimle olacak, herhangi bir noktayı güçlendirmeniz veya yorum yapmanız gerekip gerekmediğini görmek için yorumlarınızı bırakmayı unutmayın. Şerefe


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Luis dijo

    İyi yazılmış, kısa ve öz, aynı zamanda tüm izleyiciler için ilginç. İyi iş.

    1.    ChrisADR dijo

      Çok teşekkür ederim selamlar 🙂

  2.   John Jesus dijo

    Harika açıklama. Sen bir makinasın.

    1.    ChrisADR dijo

      teşekkürler

  3.   Ruben dijo

    Çok iyi açıklanmış teşekkürler

    1.    ChrisADR dijo

      Tam olarak okuduğunuz için teşekkürler 🙂

  4.   Diego dijo

    Harika, katkı için teşekkürler. Ve ikili sorundan yararlanarak, bize bir IP sınıfı, alt ağ, vb. Verebilirsiniz. Bunun bir programlama sorunu olmadığını anlıyorum, ancak bu sorunun iyi bir açıklaması her zaman beklemede olmuştur.
    Açıklamanız için tekrar teşekkürler

    1.    ChrisADR dijo

      Merhaba Diego, şu yapılabilir truth doğruyu söylemek için ben de konuya pek girmedim, ama araştırmanın daha iyi bir yolu yok bir makalede paylaşmak için bir şeyler aramaktan daha iyi 🙂 Listeye bırakacağız çünkü bir sonraki yazının zaten bir konusu var ve sertleşmeyle başa çıkacak. Selamlar 🙂

  5.   Pedro dijo

    Sen mükemmel bir öğretmensin ve bildiklerini öğretmek için çok cömertsin. Tebrikler ve teşekkürler.

    1.    ChrisADR dijo

      Çok teşekkür ederim Pedro 🙂 Hala öğretecek yerler arıyorum, ne yazık ki burada Peru'da sadece teknik profesyonel bir dereceye sahip olduğunuzda zor, bu yüzden şimdi burada üniversite eğitimime devam etme ve hatta bir yüksek lisans derecesine başvurma olasılığına bakıyorum. yabancı, kim bilir, belki yakında böyle bir şey verilecek 🙂 ama kesinlikle öğretmek benim günümü yapan bir şeydir 🙂 Selamlar

  6.   bir şey dijo

    Konuyla ilgili daha iyi bir açıklama okumamıştım, ilk örnek harika

    bu kelimeyi (16 bit değişkenler gibi), çift kelimeyi veya dörtlü kelimeyi duymamış olsam da

    "Ben zaten programladım" olursa olsun, gönderiler ilginç. Herhangi bir sorun olacaksa, gönderi değişken boyutlara örnek olarak C'yi (limitler.h) kullanmaktır, C var olan en az spesifik spesifikasyona sahiptir.

    1.    ChrisADR dijo

      Merhaba bir şey 🙂 çok teşekkür ederim, yolda örnekle geldim 😛 çünkü bu kesinlikle bir parça Assembly okuyanlar için bilinen bir veri ve işlemcinin anladığı şey bu 🙂 hahaha kesinlikle C çok özel değil, ama bence öyle Taşınabilirlik ve desteklediği farklı mimariler o kadar çeşitlidir ki, C gerçekten taşınabilir olması için her bir işlemciyi barındırmalıdır 🙂
      Selamlar ve paylaştığınız için teşekkürler.

  7.   Sergio dijo

    Bu eğitim dizisi pasa dayalı olsaydı ilginç olurdu, sanırım bugün geliştirilmekte olan en ilginç dillerden biri.
    Onun arkasındayım ama zor bir dil olduğunun farkındayım ama büyük bir gelecekle ...
    Sonraki makalelerinizi dört gözle bekliyorum, gerçekten ilginçler.
    Selamlar.

    1.    ChrisADR dijo

      Merhaba Sergio, kesinlikle ilginç olurdu, GNOME'un Rust'u kendi programları içinde uygulamayı planladığını duydum, henüz amaçladıkları tüm kapsamı görmedim, ancak bir geçiş geliyor.
      Dillere gelince, ben şahsen hala C öğreniyorum, önümüzdeki birkaç ay içinde çekirdekte geliştirmeye başlamak istiyorum ve yenilerini incelemeye başlamadan önce birkaç dili derinlemesine öğrenmeyi tercih ediyorum, ancak kesinlikle ilginç bir şey arayabilir ve birkaç örnek yapabilirim Rust'ta, çünkü dokümantasyonu kendi başına oldukça iyi görünüyor.
      Selamlar ve paylaştığınız için teşekkürler 🙂

  8.   David dijo

    Hem bu makalede hem de bir önceki makalede çok iyi açıklamalar. Umarım çok ilginç bulduğum bu temayla devam edersiniz.

    1.    ChrisADR dijo

      Merhaba David, ayrıca yazmaya ve özellikle insanları özgür yazılıma katılmaları için motive etmeye devam etmeyi umuyorum, şimdi o kadar çok proje ve ihtiyaç var ki, geliştirmek için birkaç elin daha olması harika olurdu 🙂
      selamlar

  9.   Mart dijo

    Turing makinesi hakkında bir yazı yazabilir misin?

    1.    ChrisADR dijo

      Merhaba Mart 🙂 Bazı yorumlarda daha önce dokunduğumuzu düşünüyorum, değil mi? Eminim konu hakkında ilginç bir şeyler bir araya getirebilirim 🙂 bakalım neler çıkacak. Selamlar ve tüm yazılarımı okuduğunuz için teşekkürler, ilk günden bugüne kadar hep ilgilendiğinizi gördüm 🙂

  10.   ALAN LARA dijo

    Vay canına, çok teşekkür ederim ne güzel bir açıklama.

    selamlar

    1.    ChrisADR dijo

      Çok teşekkür ederim Allan 🙂 saygılarımla

  11.   ramon hidalgo dijo

    Önceki yazınızı okudum! Açıklamanız için çok teşekkür ederim, ancak kelimeyi anlamayı asla bitiremeyeceğimi düşünmeme rağmen.

    1.    ChrisADR dijo

      Merhaba Ramon 🙂 ikisini de okuduğunuz için çok teşekkür ederim. Herhangi bir faydası varsa, "kelime" bir baytın evrimidir, işlemciler gibidir, 8 bit öncesi, 16 bit sonra vb ... çünkü her seferinde işlemek için daha fazla alana ve daha iyi hıza ihtiyaç duyarız veya güç ... 'kelime' doğdu çünkü 'bayt' alanı yetersiz kaldı ve 'çift' ve 'dörtlü' sözcüklerle aynı 🙂 gelişmeye devam etmemiz için güç ve alan eklememizi sağlayan doğal evrimdir 🙂

      selamlar

  12.   anonim dijo

    Bu 2018 programlamayı öğreniyorum evet ya da evet, teşekkür ederim

    1.    ChrisADR dijo

      Sevindim 🙂 elinizden gelenin en iyisini yapın !! Şerefe

  13.   Fatura dijo

    Çok teşekkür ederim, devam et. Nasıl programlanacağını zaten biliyorum ama kendi öğretilerimi bekliyorum, kendi kendi kendime öğretmiş olduğum programlamam kötü uygulamalarla dolu.

    1.    ChrisADR dijo

      Teşekkürler Guillermo 🙂 Umarım aşağıdaki yazılarda da ilginç şeyler bulursunuz 🙂 Selamlar

  14.   Edgar dijo

    Basit bir açıklama her zaman en iyisidir .. mükemmel ..
    Git'i öneririm ... programcılar için bir ekip olarak çalışmak ve işinizi sıraya koymak istediğinizde temeldir .. sürümler ..

    1.    ChrisADR dijo

      Çok doğru Edgar, bununla ilgili içerik göndermeye çalışacağım, ancak yeni bir şey söylemek oldukça zor çünkü git dokümantasyonu zaten bol ve birkaç şey zaten birkaç dile çevrilmiş durumda. Ne yapabileceğime bakacağım, selamlar ve paylaştığın için teşekkürler

  15.   Tiriri dijo

    Merhaba, 0 ile 18 446 744 073 709 arasındaki sayı 551 bit ondalık değere mi karşılık geliyor yoksa başka bir değere mi işaret ediyor? 615 ^ 64'ün gücünü hesapladığımda elde ettiğim sonuç: 2 64 18 446.

    1.    ChrisADR dijo

      Merhaba Tiririri, sanırım yuvarlama sorunu yaşıyorsunuz, komutu kullanarak deneyebilirsiniz. bc? mümkün olduğunca hassas olacak şekilde tasarlanmış bir programlama dilidir, bir kez içine girdikten sonra yalnızca yapılması gerekir 2^64, belki bu çözer 🙂 nasıl gittiğini bana bildirin, selamlar

      . Gerçek değer 18 446 744 073 709 551'dır, ancak 616'i çıkarıyoruz çünkü 1 olası bir değer olarak sayılır 🙂

      1.    Tiriri dijo

        Teşekkürler, bunu internette bulduğum bir güç hesaplayıcısı ile hesapladım (https://es.calcuworld.com/calculadoras-matematicas/potencias/) ve bana verdiği sonuç buydu.
        Ve evet, zaten bc komutunu denedim ve bu bana yazdığınız değeri etkili bir şekilde veriyor.

  16.   Tiriri dijo

    Tekrar merhaba, limit.h kütüphanesine atıfta bulunduğunuz resim çok küçük ve okunamıyor (en azından okuyamadım, çünkü herkesin okuduğunu görüyorum, öyle görünüyor) ve anlamadığım için artık devam etmiyorum okuma. Değiştirebilir misin bilmiyorum, umarım seni bununla rahatsız etmemişimdir.

    1.    ChrisADR dijo

      Mobil sürümü deneyebilirsiniz, bunlar biraz daha net görünür, bu bir wordpress temasıdır: / Öte yandan, tüm C başlıkları / usr / include / içinde bulunabilir, bu durumda doğrudan okumayı seçebilirsiniz. daha kolay 🙂 Yardımcı olup olmadığını görmek için daha büyük bir resim yüklemeye çalışacağım 🙂

      1.    Tiriri dijo

        Teşekkürler, bence buna sabırlı olmalıyım, heh heh.

  17.   Katekyo dijo

    Makale için teşekkürler, çünkü şimdi bir dilin değişkenlerini ve temsil aralığını biraz daha iyi anladım ve şimdi "stdint.h" kütüphanesini kullanmaya başlamam gerektiğini düşünüyorum çünkü c'de programlama yaparken kullanmayı tavsiye ediyorlar. Hafıza değerli olduğu ve kullanılana dikkat edilmesi gerektiği için eski okula öğretilmiştim.

    1.    ChrisADR dijo

      Katekyo için bir neden yok, standart kitaplığı kullanmak kesinlikle daha iyidir, ancak uint_least8_t'yi uint_fast8_t'den ayıran şeyin ne olduğunu bilmenin daha iyi olduğunu ve bunun, yazının amacı olan ilkel veri türlerini bilmekle elde edildiğini garanti edebilirim 🙂 Birçok Yorumunuz ve makaleyi okuduğunuz için teşekkürler, selamlar

  18.   galip dijo

    : Ya da ustaca bir açıklama! Kavramların bir kısmını biliyordum ama bu yazıdan birçok yeni bilgi edindim

    1.    ChrisADR dijo

      Çok teşekkür ederim Victor, makale ne kadar iyi olabilir, selamlar

  19.   Guille dijo

    Python'un programlamayı kolaylaştırmasını gerçekten çok sevdim, http://zetcode.com/gui/pyqt4/ Son tetrisini sevdim: http://zetcode.com/gui/pyqt4/thetetrisgame/
    Bir yaz boyunca bu tetrislere puan, çok oyunculu ve müzik koymak için yavaş yavaş ama çok eğlenceli rötuş yaptım.

    1.    ChrisADR dijo

      Merhaba Guille, üzerinde çalıştığınız yazılımın yavaş yavaş büyüdüğünü görmek kesinlikle çok eğlenceli 🙂 bu eşsiz bir deneyim ve dahası, birisi geliştirmekte olduğunuz şeyi yararlı bulduğunda, yani başka bir dünyadan 😀 paylaştığınız için çok teşekkür ederim 🙂

      1.    Guille dijo

        Yüklediğim dosya (müzik için 30 Mb) http://guillermo.molleda.com/Tetris9.7z
        Her oyuncu için farklı bir başlangıç ​​hızı ayarlamalısınız veya yeni bir oyundan sonra puanları yeniden başlatırsanız… ve iki kızımın benimle oynayabileceği üç oyuncu var. Hatta bağımlılık yapar.