folder Tahribat.com Forumları
linefolder C - C++
linefolder Standart C De Bir Soru



Standart C De Bir Soru

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tayok
    Tayok's avatar
    Kayıt Tarihi: 04/Mart/2007
    Erkek

    Arkadaşlar bildiğiniz gibi c de değişkenler arasında unsigned int ve int bulunmakta.

     

    Normalde bu nesnelerden signed int de ilk dijit sayının artı yada eksi olduğunu belirtmektedir örneğin:

    10000001=-1

    00000001=+1

     

    Ve bildiğiniz gibi unsigned int değişkeninde 8 dijitin tamamı kullanılmaktadır. Bunun yardımıyla pozitif alandan daha fazla sayıyla uğraşmamızı sağlamaktadır.

     

    Şimdi sorum şu. Unsigned int de signed int da bellekte (platform ve derleyiciye göre değişiyor şu an visual studio ve windows vista da) 32 bit yani 4 byte yer kapladığına göre. Program bir signed int veri tipini nasıl olupta unsigned int olarak sanmıyor.

    Yani normalde signed int
    1000 0001=-1 olmasına rağmen neden 128+1=129 sanmıyor. (1 byte olmadığını biliyorum örnek olarak yazdım)

     

    Sonuçta her ikiside 4 byte yer kaplıyor ve unsigned veya signed olduğunu belirten birşey bulamadım.

     

    C ile ilgilenenler bu soruma yanıt verirse çok sevinirim.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    inside
    anonim6918524
    anonim6918524's avatar
    Banlanmış Üye
    Bilgi/Destek Madalyası Üstün Hizmet Madalyası
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    Asm boyutuna inersek. Sign flag belirler.


    λ
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tayok
    Tayok's avatar
    Kayıt Tarihi: 04/Mart/2007
    Erkek

    Hocam daha c yi çözemedik asm inmesek ? :D Bu ikisi arasındaki farkı ayırt etmesi için 4 byte dan daha fazla yer kaplaması gerekmez mi? Signed yada unsigned olduğunu belirten bir belirtecin daha bellekte yer kaplaması gerekmez mi?

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NmC
    NmC's avatar
    Kayıt Tarihi: 23/Kasım/2008
    Erkek

    Tayok bunu yazdı:
    -----------------------------

    Arkadaşlar bildiğiniz gibi c de değişkenler arasında unsigned int ve int bulunmakta.

     

    Normalde bu nesnelerden signed int de ilk dijit sayının artı yada eksi olduğunu belirtmektedir örneğin:

    10000001=-1

    00000001=+1

     

    Ve bildiğiniz gibi unsigned int değişkeninde 8 dijitin tamamı kullanılmaktadır. Bunun yardımıyla pozitif alandan daha fazla sayıyla uğraşmamızı sağlamaktadır.

     

    Şimdi sorum şu. Unsigned int de signed int da bellekte (platform ve derleyiciye göre değişiyor şu an visual studio ve windows vista da) 32 bit yani 4 byte yer kapladığına göre. Program bir signed int veri tipini nasıl olupta unsigned int olarak sanmıyor.

    Yani normalde signed int
    1000 0001=-1 olmasına rağmen neden 128+1=129 sanmıyor. (1 byte olmadığını biliyorum örnek olarak yazdım)

     

    Sonuçta her ikiside 4 byte yer kaplıyor ve unsigned veya signed olduğunu belirten birşey bulamadım.

     

    C ile ilgilenenler bu soruma yanıt verirse çok sevinirim

    -----------------------------

    Hocam orda tutulan verinin türü de bi yerde tutuluyor sonuçta.. :)

    Senin mantıkla gidecek olursak 1 karakter de 1 byte yer kaplıyor, ve sistem 4 bayt'ı neden 4 harf olarak algılamıyor mesela? :)


    There are 10 types of people in the world. Those who knows binary and those who dont...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    inside
    anonim6918524
    anonim6918524's avatar
    Banlanmış Üye
    Bilgi/Destek Madalyası Üstün Hizmet Madalyası
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    Tayok bunu yazdı:
    -----------------------------

    Hocam daha c yi çözemedik asm inmesek ? :D Bu ikisi arasındaki farkı ayırt etmesi için 4 byte dan daha fazla yer kaplaması gerekmez mi? Signed yada unsigned olduğunu belirten bir belirtecin daha bellekte yer kaplaması gerekmez mi

    -----------------------------

    Hayır. Bitlere göre bayrak durumu değişiyor zaten. Sen signed yaptığında da unsigned yaptığında da aynı boyutta yer kullanıyorsun zaten. Unsignedsa - lere girmiyorsun. Ama - lere ineceğin kadar fazlasını kullanma imkanın oluyor.


    λ
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tayok
    Tayok's avatar
    Kayıt Tarihi: 04/Mart/2007
    Erkek

    Şimdi anladım olayı. Olay tip belirleyicilerinden kaynaklanıyor %u veya %d arasındaki fark. Yani değişkeni okuturken . %d diye okutursan verinin signed olduğu varsayılarak okutuluyor. Ama yok %u dersem unsigned int olduğu varsayılarak okutuluyor. Teşekkürler.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    NmC
    NmC's avatar
    Kayıt Tarihi: 23/Kasım/2008
    Erkek

    Tayok bunu yazdı:
    -----------------------------

    Şimdi anladım olayı. Olay tip belirleyicilerinden kaynaklanıyor %u veya %d arasındaki fark.


    -----------------------------

    Aynen öyle hocam :)

    Eğer ki %s ile basmaya kalkarsan da \0'ın degerini gorene kadar byte byte basar veriyi mesela :)


    There are 10 types of people in the world. Those who knows binary and those who dont...
Toplam Hit: 1311 Toplam Mesaj: 7