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?
Ö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.
Ö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.
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.
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.
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 >
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.
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.
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.
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)
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.
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!!!
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
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
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.
Konuyu tam 12 yıl sonra hortlatayım Ö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
Bu mesaja 1 cevap geldi. Cevapları Gizle
Bu mesaja 1 cevap geldi. Cevapları Gizle
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.
Bu mesaja 1 cevap geldi. Cevapları Gizle
Ö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.
Bu mesaja 1 cevap geldi. Cevapları Gizle
1 Byte dan 255 adet bool çıkartılabilir, düzelteyim dedim.
Bu mesaja 2 cevap geldi. Cevapları Gizle
Çok uykum geldi düşünemiyorum. Nasıl?
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 >
< Bu ileti mobil sürüm kullanılarak atıldı > Bu mesaja 1 cevap geldi. Cevapları Gizle
< Bu ileti mobil sürüm kullanılarak atıldı >
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.
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.
Bu mesaja 1 cevap geldi. Cevapları Gizle
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 :)
Bu mesaja 2 cevap geldi. Cevapları Gizle
Cikmaz hocam bir byte icinde en fazla 8 bool saklayabilirsiniz. Fakat bu sekiz bool kombinasyonundan 256 durum olusur. (2 uzeri 8)
< Bu ileti mobil sürüm kullanılarak atıldı > Bu mesaja 1 cevap geldi. Cevapları Gizle
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.
Bu mesaja 1 cevap geldi. Cevapları Gizle
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!!!
< Resime gitmek için tıklayın >
< Resime gitmek için tıklayın >
< Bu mesaj bu kişi tarafından değiştirildi erkan_apache -- 19 Temmuz 2012; 23:18:33 >
1 bytetan 255 birbirinden bagimsiz bool kullanan bir programcik yazarsan bana, herhangi bir internet sitesinden 25tl degerinde istedigin bir seyi adresine yollarim
Bu mesaja 1 cevap geldi. Cevapları Gizle
Abi sen şu Microsoft'ta çalışan üyesin değil mi.
< Bu ileti mobil sürüm kullanılarak atıldı > Bu mesaja 1 cevap geldi. Cevapları Gizle
Ş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.
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