logo

C'deki 2'lerin tamamlayıcısı nedir?

C'deki 2'ler tümleyeni, C'deki 1'ler tümleyeninden üretilir. Bildiğimiz gibi, ikili bir sayının 1'ler tümleyeni, bit 1'in 0'a ve 0'ın 1'e dönüştürülmesiyle yaratılır; Bir ikili sayının 2'lere tümleyeni, bir ikili sayının 1'lere tümleyenine bir eklenerek oluşturulur.

Kısaca C'deki 2'lerin tümleyeninin, C'deki birin tümleyeni ile bir'in toplamı olarak tanımlandığını söyleyebiliriz.

C'de 2'lerin tamamlayıcısı

Yukarıdaki şekilde ikili sayı 00010100'e eşittir ve bunun bire tümleyeni, 1 bitinin 0'a ve 0 bitinin 1'e dönüştürülmesiyle hesaplanır. Dolayısıyla birin tümleyeni 11101011 oluyor. Birin tümleyenini hesapladıktan sonra birin tümleyenine 1 ekleyerek ikinin tümleyenini hesaplıyoruz ve sonuç 11101100 oluyor.

2'lerin tümleyeninden oluşan bir program oluşturalım.

 #include int main() { int n; // variable declaration printf('Enter the number of bits do you want to enter :'); scanf('%d',&n); char binary[n+1]; // binary array declaration; char onescomplement[n+1]; // onescomplement array declaration char twoscomplement[n+1]; // twoscomplement array declaration int carry=1; // variable initialization printf('
Enter the binary number : '); scanf('%s', binary); printf('%s', binary); printf('
The ones complement of the binary number is :&apos;); // Finding onescomplement in C for(int i=0;i<n;i++) { if(binary[i]="=&apos;0&apos;)" onescomplement[i]="1" ; else } onescomplement[n]="" printf('%s',onescomplement); printf('
the twos complement of a binary number is : '); finding twoscomplement in c for(int i="n-1;">=0; i--) { if(onescomplement[i] == &apos;1&apos; &amp;&amp; carry == 1) { twoscomplement[i] = &apos;0&apos;; } else if(onescomplement[i] == &apos;0&apos; &amp;&amp; carry == 1) { twoscomplement[i] = &apos;1&apos;; carry = 0; } else { twoscomplement[i] = onescomplement[i]; } } twoscomplement[n]=&apos;&apos;; printf(&apos;%s&apos;,twoscomplement); return 0; } </n;i++)>

Çıktı

C'de 2'lerin tamamlayıcısı

Yukarıdaki programın analizi,

  • İlk olarak bit sayısını giriyoruz ve bu '' dosyasında saklanıyor. N ' değişken.
  • Bit sayısını girdikten sonra karakter dizisini bildiririz, yani: karakter ikili[n+1], ikili sayıyı tutan. ' N ' önceki adımda girdiğimiz bit sayısıdır; temel olarak dizinin boyutunu tanımlar.
  • İki dizi daha ilan ediyoruz, yani, bir tamamlayıcı[n+1] , Ve iki tümleyen[n+1]. bir tamamlayıcı[n+1] dizi ikili sayının birler tümleyenini tutarken iki tümleyen[n+1] dizi bir ikili sayının ikinin tamamlayıcısını tutar.
  • Başlat taşımak değişkeni seçin ve bu değişkene 1 değer atayın.
  • Bildirimlerden sonra ikili sayıyı giriyoruz.
  • Şimdi bir ikili sayının bire tümleyenini hesaplayacağız. Bunu yapmak için bir oluştururuz döngü ikili dizi boyunca yinelenen, for(int i=0;i. For döngüsünde bitin 1 mi yoksa 0 mı olduğu kontrol edilir. Bit 1 ise o zaman bir tamamlayıcı[i]=0 başka bir tamamlayıcı[i]=1 . Bu şekilde bir ikili sayının bire tümleyeni oluşturulur.
  • Birin tümleyenini hesapladıktan sonra ikili sayının 2'ye tümleyenini üretiriz. Bunu yapmak için bir oluştururuz döngü son elemandan başlangıç ​​elemanına kadar yinelenir. For döngüsünde üç koşulumuz var:
    • Birlerin tümleyeni[i]'nin biti 1 ve taşımanın değeri 1 ise, ikitümleyen[i]'ye 0 koyarız.
    • Birlerin tümleyeni[i]'nin biti 0 ise ve taşıma değeri 1 ise, iki tümleyen[i]'e 1'i ve elde'ye 0'ı koyarız.
    • Yukarıdaki iki koşul yanlışsa, bir tümleyen[i], iki tümleyen[i]'ye eşittir.

İmzalı tamsayılar kullanılarak sıklıkla C'de temsil edilir. ikinin tamamlayıcısı notasyonu . Aynısını kullanmak ikili gösterim her ikisini de ifade edecek bir mekanizma sunar pozitif Ve negatif tamsayılar . en önemli bit (MSB) olarak kullanılır işaret biti içinde ikinin tamamlayıcısı gösterimi , Neresi 0 bir anlamına gelir pozitif tamsayı , Ve 1 bir anlamına gelir negatif sayı .

Bir ile başlayarak negatif sayılar ikili formda mutlak değeri alabilirsiniz. birinin tamamlayıcısı (bit düzeyinde olumsuzlama) elde etmek için bu değerin Ikisinin tamamlayıcısı temsili negatif tamsayı . Sen ekle 1 -e sonuç değeri temsilciliğini almak için Ikisinin tamamlayıcısı .

ikinin tamamlayıcısı kodlaması C'de temsil edebilir imzalı tamsayılar ve hızlı aritmetik işlemleri gerçekleştirebilir. İkinin tamamlayıcısını kullanmanın bir yararı da şunları yapabilme yeteneğidir: ek Ve çıkarma işaretsiz sayılarla aynı ikili işlemleri kullanır.

ikili sayılar gibi birbirine eklenir işaretsiz tamsayılar ikinin tamamlayıcısını eklerken. Bulunduğu yerden bir taşıma ana kritik bit sadece göz ardı ediliyor. Bu gerçek nedeniyle, işleme imzalı sayılar farklı olması gerekli değildir ve toplama işlemi basitleşir.

Eklemeyi düşünün -5 Ve -3 kullanmak 8 bitlik ikinin tamamlayıcısı temsil, örneğin:

için ikili sayı -5 dır-dir 11111011.

için ikili sayı -3 dır-dir 11111101 .

eklemeyi gerçekleştiriyoruz:

 11111011 (-5) + 11111101 (-3) ------------- 111110100 (-8) 

Cevap 111110100 , hangisinde Ikisinin tamamlayıcısı eşittir -8 .

Toplama işlemine benzer şekilde çıkarma işlemi de şu şekilde yapılabilir: ikinci işlenen sanki toplamaymış gibi ikinin tümleyeni. Başka bir deyişle, negatif bir sayıyı kaldırmak için ilk işlenene ikinin tümleyenini eklersiniz.

Örneğin, ne zaman -3 den çıkarılır -5 :

İkili olarak, -5 tarafından temsil edilir 11111011 Ve -(-3) ile 00000011 (ikinin tamamlayıcısı -3 )

Çıkarma işleminin gerçekleştirilmesi

 11111011 (-5) + 00000011 (+3) ------------- 11111110 (-8) 

Sonuç: 11111110 , ikinin tamamlayıcısı şuna eşittir: -8 .

Çözüm:

C'de, 2'lerin tamamlayıcısı negatif bir sayının, sayıya bir eklenerek oluşturulan ikili gösterimidir. 1'lerin tamamlayıcısı . Bilgisayar sistemleri, işaretli sayıları temsil etmek ve aritmetik işlemleri verimli bir şekilde yürütmek için sıklıkla bu fikri kullanır.

Almak için 2'lerin tamamlayıcısı İkili bir tam sayının ilk olarak belirlenmesi gerekir. 1'lerin tamamlayıcısı bitleri çevirerek sayının. Daha sonra temsilciliğin 2'lerin tamamlayıcısı tarafından elde edilir bir tane eklemek -e 1'lerin tamamlayıcısı . en önemli bit (MSB) bir sayının olup olmadığını ifade ederek işaret biti olarak işlev görecektir. pozitif veya olumsuz .

Hesaplanması 2'lerin tamamlayıcısı Belirli bir ikili tamsayı için ekteki C programında gösterilmiştir. Kullanıcıdan her ikisini de girmesi istenir ikili numara ve bit sayısı. Bundan sonra program 1'lerin tümleyenini elde etmek için gerekli işlemleri yapar ve ardından 2'lerin tamamlayıcısı . Daha sonra bulgular gösterilir.

Bilgisayar bilimi ve programlamada, aşağıdakileri anlamak çok önemlidir: 2'lerin tamamlayıcısı temsili, çünkü ikili olarak ifade edilen negatif değerlerin etkili bir şekilde işlenmesini mümkün kılar. Yapar Ekleme çıkarma , Ve mantıksal işlemler her ikisinde de daha basit pozitif Ve negatif sayılar . aralığı temsil edilebilir tamsayılar yaklaşık simetriktir sıfır nedeniyle 2'lerin tamamlayıcısı temsili, çeşitli sayısal işlemler için uygun hale getirir.

Programcılar, 2'lerin tamamlayıcısı fikrini anlayarak ve bunu doğru bir şekilde kullanarak, C ve diğer programlama dillerinde işaretli tamsayılar kullanarak aritmetik işlemler gerçekleştirebilir, ikili verilerle çalışabilir ve algoritmalar tasarlayabilirler.