SORU
8 EYLÜL 2011, PERŞEMBE


C - Nasıl baskı (print kullanarak) bir dizi bellekte saklanma için?

İşletim sistemleri hakkında üniversite ders takip ediyorum ve ikili onaltılık, vb onaltılık için ondalık dönüştürmek için nasıl öğreniyoruz. ve bugün biz imzalı/imzasız numaraları bellekte iki tamamlayıcı (1 numara~) kullanarak nasıl saklandığını öğrendim.

Kağıt üzerinde yapmak egzersizleri bir çift var ve öğretmen için çalışmamı sunmadan önce cevaplar doğrulamak mümkün olmak istiyorum. İlk birkaç egzersizi için bir C programı yazdım ama şimdi şu sorun ile benim cevabım olun ben nasıl sıkıştım:

char a, b;

short c;
a = -58;
c = -315;

b = a >> 3;

ve ikili gösterimi göstermemiz gerekiyorbellektea, b c.

Kağıt üzerinde yaptım ve bana aşağıdaki sonuçlar (iki tamamlayıcı sonra sayıların bellekteki tüm ikili gösterimleri) verir:

a = 00111010 (char, 1 bayt)

b = 00001000 (char, 1 bayt)

c = 11111110 11000101 (kısa, 2 bayt yani)

Bir şekilde benim cevap doğrulamak için var mı? C standart bir şekilde bir sayının bellekte ikili gösterimini göstermek için var, ya da kod var mı ben her kendimi (iki tamamlayıcı hesaplamak ve sonra da ikili dönüştürmek) adım? İkincisi çok uzun sürmez biliyorum ama eğer bunu yapmak için standart bir yol olup olmadığını merak ediyorum.

Yardım ettiğin için (eğer bu yinelenen eğer bir tür özür dilerim biliyorum bu anahtar kelime ile benzer bir konu ile ilgili bir soru bulamadım) teşekkür ederim.

Ayrıca, gerçekten buna göre onları değiştirmek için çekinmeyin için hangisini seçeceğimi bilmiyordum.

CEVAP
8 EYLÜL 2011, PERŞEMBE


Muhtemelen en kolay yolu std::bitset bir değeri temsil oluşturmak için, daha sonra cout bu akışı.

#include <bitset>
...

char a = -58;    
std::bitset<8> x(a);
std::cout << x;

short c = -315;
std::bitset<16> y(c);
std::cout << y;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Besnik Ibrahimi

    Besnik Ibrah

    27 Mart 2010
  • ChasesAndCrashes

    ChasesAndCra

    31 Temmuz 2009
  • LearnKey

    LearnKey

    19 AĞUSTOS 2008