Şimdi Ara

Neden bool veri tipi hafızada 1byte yer kaplar?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
20
Cevap
0
Favori
2.615
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Boolean yani bool tipi sadece iki değer döndürür 1 veya 0 (true and false), fakat neden 1 bit'lik bir değişken için hafızada 1 byte'lık yada 8 bit yer ayrılır?



  • Hafızada alan byte byte ayrılır.1bitlik alan ayrılamayacağına göre 1 byte ayrılır.Yanlışım varsa düzeltsin arkadaşlar.
  • quote:

    Orijinalden alıntı: ElektrikPc

    Hafızada alan byte byte ayrılır.1bitlik alan ayrılamayacağına göre 1 byte ayrılır.Yanlışım varsa düzeltsin arkadaşlar.
    Örneğin 1 bit kullanacağız bunun için hafızada 1 byte yer ayrılır, 3 bit kullanıcaz 3 byte ayrılır, yani 1 bit için geri kalan 7 bit feda edilir, yanlışım varsa düzeltin.
  • quote:

    Orijinalden alıntı: erkan_apache

    Örneğin 1 bit kullanacağız bunun için hafızada 1 byte yer ayrılır, 3 bit kullanıcaz 3 byte ayrılır, yani 1 bit için geri kalan 7 bit feda edilir, yanlışım varsa düzeltin.

    Hayır aslında öyle değil.3 bit kullancaksın diye birsey yoktur aslında. _ _ _ _ _ _ _ _ bunların bu alt çizgilerin hepsi birer bittir ve 8 bit=1 byte tır.eger bu alana 1 i göndereceksen bu 00000001 diye gider.yani kalanlar feda edilir diye birşey yok.Feda dediğin şeyler 0 lardır.
  • quote:

    Orijinalden alıntı: ElektrikPc

    quote:

    Orijinalden alıntı: erkan_apache

    Örneğin 1 bit kullanacağız bunun için hafızada 1 byte yer ayrılır, 3 bit kullanıcaz 3 byte ayrılır, yani 1 bit için geri kalan 7 bit feda edilir, yanlışım varsa düzeltin.

    Hayır aslında öyle değil.3 bit kullancaksın diye birsey yoktur aslında. _ _ _ _ _ _ _ _ bunların bu alt çizgilerin hepsi birer bittir ve 8 bit=1 byte tır.eger bu alana 1 i göndereceksen bu 00000001 diye gider.yani kalanlar feda edilir diye birşey yok.Feda dediğin şeyler 0 lardır.

    Alıntıları Göster
    Dil belirtmemişsiniz ama c/c++ için tek tek bit erişimi mümkündür. Yani isterseniz 1 byte tan 8 bool çıkartabilirsiniz. Hatta bir değişkenin tam olarak kaç bite sahip olacağını da belirtebilirsiniz.

    Öyleyse niye normalde öyle değil derseniz sebebi verimlilik. Bit işlemleri yavaştır, birkaç byte tasarruf yapmak için cpu zamanını boşa harcamaya değmez.




  • quote:

    Orijinalden alıntı: elektro_gadget

    Dil belirtmemişsiniz ama c/c++ için tek tek bit erişimi mümkündür. Yani isterseniz 1 byte tan 8 bool çıkartabilirsiniz. Hatta bir değişkenin tam olarak kaç bite sahip olacağını da belirtebilirsiniz.

    Öyleyse niye normalde öyle değil derseniz sebebi verimlilik. Bit işlemleri yavaştır, birkaç byte tasarruf yapmak için cpu zamanını boşa harcamaya değmez.

    1 Byte dan 255 adet bool çıkartılabilir, düzelteyim dedim.
  • quote:

    Orijinalden alıntı: sehlor

    1 Byte dan 255 adet bool çıkartılabilir, düzelteyim dedim.

    Çok uykum geldi düşünemiyorum. Nasıl?
  • Ben Nette bir yanıt buldum:
    Bilgisayar mimarisinde adreslenebilen en küçuk yapı byte olduǧu için 1 bit hafızada byte ile ifade edilir. örneǧin 2.baytın 5.biti diye ifade edilir yani direkt 13.bit denilmez, yanlışım varsa düzeltin.



    < Bu mesaj bu kişi tarafından değiştirildi erkan_apache -- 19 Temmuz 2012; 7:59:11 >
  • 1 byte 8 bite karşılık geliyor. 1 byte a 255 bool değeri karşılık geliyor diyen arkadaş bize açıklama borçlu sanırım
  • quote:

    Orijinalden alıntı: erkan_apache

    Ben Nette bir yanıt buldum:
    Bilgisayar mimarisinde adreslenebilen en küçuk yapı byte olduǧu için 1 bit hafızada byte ile ifade edilir. örneǧin 2.baytın 5.biti diye ifade edilir yani direkt 13.bit denilmez, yanlışım varsa düzeltin.

    O dediğin işlemcinin veriyolu genişliğine bağlı. 32 bitlik işlemcide 32 bite kadar doğal yolla erişilir. 64 bitlik işlemcide de 64 bite kadar. Kısaca cpu yazmaçları tek seferde kaç byte alabiliyorsa o kadar.

    Örnek:
    unsigned int a = 0;
    a |= (1 << 25);

    a'nın 25 numaralı bitini 1 yaptık. Böylece a = 33554432 oldu.
  • quote:

    Orijinalden alıntı: sehlor
    1 Byte dan 255 adet bool çıkartılabilir, düzelteyim dedim.

    Mantık hatanız var. 256 farklı integer değeri elde edebiliriz ancak 255 farklı bool çıkartamayız. Bool zaten 1 bitlik bir veridir. 1 byte içerisinde 8 adet 1 bitlik hücre yer aldığını göz önüne alırsak 8 tane bool değerinden 1 byte elde edebiliriz. Daha sonra bu 8 farklı bool değerlerine 1 veya 0 muamelesi yapıp yanyana koyduğumuzda oluşan ifadeyi 2lik tabanda bir sayı kabul edersek de 256 farklı sayı değerimiz olur.
  • quote:

    Orijinalden alıntı: dogauzun

    quote:

    Orijinalden alıntı: sehlor
    1 Byte dan 255 adet bool çıkartılabilir, düzelteyim dedim.

    Mantık hatanız var. 256 farklı integer değeri elde edebiliriz ancak 255 farklı bool çıkartamayız. Bool zaten 1 bitlik bir veridir. 1 byte içerisinde 8 adet 1 bitlik hücre yer aldığını göz önüne alırsak 8 tane bool değerinden 1 byte elde edebiliriz. Daha sonra bu 8 farklı bool değerlerine 1 veya 0 muamelesi yapıp yanyana koyduğumuzda oluşan ifadeyi 2lik tabanda bir sayı kabul edersek de 256 farklı sayı değerimiz olur.

    Alıntıları Göster
    Sanırım bir açıklama borçluyum, yapayım hemen;

    Siz arkadaşlar çok haklısınız 1 byte = 8 bit ve bu da mantıksal olarak 8 adet 1 ve 0 bite sahip olabilirsiniz.

    Benim yaklaşımım biraz programlama tabanlı oldu, 1 byte a 0-255 arası bir veri işletebildiğimize göre bu veriden (byte % 2) işlemi ile farklı değerlerden 255 adet bool değişken çıkarılabilir. Dün gece ne düşünerek yazdım tam emin değilim ama, tecrübeden dolayı böyle bir cevap verdim, genel teorik bilgi için haklısınız 1 byte = 8 bool fakat, byte değerlerine göre 255 farklı değerden 255 farklı bool çıkartabiliriz.

    Açıklama yeterlidir umarım :)




  • quote:

    Orijinalden alıntı: sehlor

    Sanırım bir açıklama borçluyum, yapayım hemen;

    Siz arkadaşlar çok haklısınız 1 byte = 8 bit ve bu da mantıksal olarak 8 adet 1 ve 0 bite sahip olabilirsiniz.

    Benim yaklaşımım biraz programlama tabanlı oldu, 1 byte a 0-255 arası bir veri işletebildiğimize göre bu veriden (byte % 2) işlemi ile farklı değerlerden 255 adet bool değişken çıkarılabilir. Dün gece ne düşünerek yazdım tam emin değilim ama, tecrübeden dolayı böyle bir cevap verdim, genel teorik bilgi için haklısınız 1 byte = 8 bool fakat, byte değerlerine göre 255 farklı değerden 255 farklı bool çıkartabiliriz.

    Açıklama yeterlidir umarım :)

    Cikmaz hocam bir byte icinde en fazla 8 bool saklayabilirsiniz. Fakat bu sekiz bool kombinasyonundan 256 durum olusur. (2 uzeri 8)




  • quote:

    Orijinalden alıntı: Fatih513


    quote:

    Orijinalden alıntı: sehlor

    Sanırım bir açıklama borçluyum, yapayım hemen;

    Siz arkadaşlar çok haklısınız 1 byte = 8 bit ve bu da mantıksal olarak 8 adet 1 ve 0 bite sahip olabilirsiniz.

    Benim yaklaşımım biraz programlama tabanlı oldu, 1 byte a 0-255 arası bir veri işletebildiğimize göre bu veriden (byte % 2) işlemi ile farklı değerlerden 255 adet bool değişken çıkarılabilir. Dün gece ne düşünerek yazdım tam emin değilim ama, tecrübeden dolayı böyle bir cevap verdim, genel teorik bilgi için haklısınız 1 byte = 8 bool fakat, byte değerlerine göre 255 farklı değerden 255 farklı bool çıkartabiliriz.

    Açıklama yeterlidir umarım :)

    Cikmaz hocam bir byte icinde en fazla 8 bool saklayabilirsiniz. Fakat bu sekiz bool kombinasyonundan 256 durum olusur. (2 uzeri 8)

    Tamam 256 durum oluşur ama 0-255 arasıdır.Yani 0 da bir durumdur.sehlor doğru söylemiş aslında 0-255 ama 256 durum oluşur kafası karışmış olabilir.Ya da ben yanlış biliyor olabilirim.




  • quote:

    Orijinalden alıntı: Alexander Supertramp!

    quote:

    Orijinalden alıntı: Fatih513


    quote:

    Orijinalden alıntı: sehlor

    Sanırım bir açıklama borçluyum, yapayım hemen;

    Siz arkadaşlar çok haklısınız 1 byte = 8 bit ve bu da mantıksal olarak 8 adet 1 ve 0 bite sahip olabilirsiniz.

    Benim yaklaşımım biraz programlama tabanlı oldu, 1 byte a 0-255 arası bir veri işletebildiğimize göre bu veriden (byte % 2) işlemi ile farklı değerlerden 255 adet bool değişken çıkarılabilir. Dün gece ne düşünerek yazdım tam emin değilim ama, tecrübeden dolayı böyle bir cevap verdim, genel teorik bilgi için haklısınız 1 byte = 8 bool fakat, byte değerlerine göre 255 farklı değerden 255 farklı bool çıkartabiliriz.

    Açıklama yeterlidir umarım :)

    Cikmaz hocam bir byte icinde en fazla 8 bool saklayabilirsiniz. Fakat bu sekiz bool kombinasyonundan 256 durum olusur. (2 uzeri 8)

    Tamam 256 durum oluşur ama 0-255 arasıdır.Yani 0 da bir durumdur.sehlor doğru söylemiş aslında 0-255 ama 256 durum oluşur kafası karışmış olabilir.Ya da ben yanlış biliyor olabilirim.

    Alıntıları Göster
    benim demek istediğim 16byte 'lık bir hafızamız var programda sırası ile 4 değişken tanımladık, derleyici bellekte bu değişkenler için yer ayırdı ve değer atadı.
    ornek1 int olduğu için 4byte lık yer işgal etti, örnek 2 bool olduğu içinde 1 byte'lık yer işgal etti ve örnek3 byte olduğu içinde 1byte'lık yer işgal etti. yani ornek3 değişkeni 5.baytın 2.bitinden hafıza alanına başlamak yerine 6.byte'ın başından ona yer ayırdı.
    Tabi derleyicinin tam olarak nasıl belek kullanımını bilmediğim için kendi fikrimi ortaya attım, hatam varsa affola!!!


     Neden bool veri tipi hafızada 1byte yer kaplar?


     Neden bool veri tipi hafızada 1byte yer kaplar?



    < Bu mesaj bu kişi tarafından değiştirildi erkan_apache -- 19 Temmuz 2012; 23:18:33 >




  • quote:

    Orijinalden alıntı: sehlor

    Sanırım bir açıklama borçluyum, yapayım hemen;

    Siz arkadaşlar çok haklısınız 1 byte = 8 bit ve bu da mantıksal olarak 8 adet 1 ve 0 bite sahip olabilirsiniz.

    Benim yaklaşımım biraz programlama tabanlı oldu, 1 byte a 0-255 arası bir veri işletebildiğimize göre bu veriden (byte % 2) işlemi ile farklı değerlerden 255 adet bool değişken çıkarılabilir. Dün gece ne düşünerek yazdım tam emin değilim ama, tecrübeden dolayı böyle bir cevap verdim, genel teorik bilgi için haklısınız 1 byte = 8 bool fakat, byte değerlerine göre 255 farklı değerden 255 farklı bool çıkartabiliriz.

    Açıklama yeterlidir umarım :)

    1 bytetan 255 birbirinden bagimsiz bool kullanan bir programcik yazarsan bana, herhangi bir internet sitesinden 25tl degerinde istedigin bir seyi adresine yollarim




  • quote:

    Orijinalden alıntı: OnurJAM

    quote:

    Orijinalden alıntı: sehlor

    Sanırım bir açıklama borçluyum, yapayım hemen;

    Siz arkadaşlar çok haklısınız 1 byte = 8 bit ve bu da mantıksal olarak 8 adet 1 ve 0 bite sahip olabilirsiniz.

    Benim yaklaşımım biraz programlama tabanlı oldu, 1 byte a 0-255 arası bir veri işletebildiğimize göre bu veriden (byte % 2) işlemi ile farklı değerlerden 255 adet bool değişken çıkarılabilir. Dün gece ne düşünerek yazdım tam emin değilim ama, tecrübeden dolayı böyle bir cevap verdim, genel teorik bilgi için haklısınız 1 byte = 8 bool fakat, byte değerlerine göre 255 farklı değerden 255 farklı bool çıkartabiliriz.

    Açıklama yeterlidir umarım :)

    1 bytetan 255 birbirinden bagimsiz bool kullanan bir programcik yazarsan bana, herhangi bir internet sitesinden 25tl degerinde istedigin bir seyi adresine yollarim

    Abi sen şu Microsoft'ta çalışan üyesin değil mi.




  • Sehlor un gece gece kafası karışmıştır. Tek başına oyun yapan adam onu mu bilmeyecek.
  • quote:

    Orijinalden alıntı: Guest-BF8E9B238

    Sehlor un gece gece kafası karışmıştır. Tek başına oyun yapan adam onu mu bilmeyecek.
    Demek istediğimi bir parça C kodu ile açıklayayım, donanım da giriyor işiniçine çünkü. Bakın mpi1 byte tipinde sensörden gelen bir değer var, gelen değer 8 bit yani 0-255 arasında, ve mikroişlemci bu değerlere göre işlem yapıyor, açıklamak istediğim şey 1 byte veri ile 255 duruma göre işlem yapabilirsiniz.

    Şimdi diyeceksiniz ki byte % 2 işlemi ya 1 ya 0 verir buda iki durum oluşturur, ama sensörü hesaba katarsanız eğer durum değişir ve elinizde sensörden gelen 8 bitlik veriye karşılık durumu işleyebileceğiniz 128 adet 0 128 adet 1 oluşur.

    Tekrar ediyorum, teorik kullanımda 1 byte = 8 bit = 8 adet 1/0.

    Aşağıda bir PIC, C, C# ile zamanında kodladığım ve proje olarak çıkardığım bir donanımdan kesik bir kod var, umarım anlatabilir ne anlatmak istediğimi.

    void motorforward3 (BYTE mpi1) 
    {
    for(;mpi1>0;)
    {
    unsigned char stopprint = mpi1 % 2; // DS18B20 Gelen değer.
    if(!(loopcontrol&stopprint))
    {
    delay(3500);
    FIO1SET=PH2|PH4;
    FIO1CLR=PH1|PH3;//1,3 TERS
    delay(3500);
    FIO1SET=PH1;
    FIO1CLR=PH2;//2,3
    delay(3500);
    FIO1SET=PH3;
    FIO1CLR=PH4;//2,4
    delay(3500);
    FIO1SET=PH2;
    FIO1CLR=PH1;//1,4
    delay(3500);
    }
    mpi1--;
    }
    }




  • Konuyu tam 12 yıl sonra hortlatayım  Neden bool veri tipi hafızada 1byte yer kaplar? Öncelikle ilk söylediğin şey 1 byte da 255 bool saklamaktı bu mümkün değil sonradan söylediğin gibi 8 adet boolean kullanabilirsin en fazla. bu 8 boolean da 0-255 farklı ihtimalden 256 toplam ihtimali oluşturur ayrıca


    işlemcileri kapı kapı gezen bir elektrik fatura yazıcısı olarak düşünün bir boolean için 1 bit kaplayacağım diye tüm bitleri hafızasına alması gerekir 4 byte için 32 adet evi kontrol etmeli ama byte olursa 4 e düşer bu da 8 katı hız elde ettirir. bu yüzden zaten daha büyük bloklar için bile başta artık dosya boyutunu yazdırırarak o byteların atlanması sağlanıyor gibi gibi...


    Bu yüzden 1 byte yer kaplıyor boolean ama 1 byte dan 8 bool çıkar  Neden bool veri tipi hafızada 1byte yer kaplar? 





  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.