bitleri birleştirip byte oluşturma

Başlatan ericnaval, 01 Ekim 2013, 15:09:13

ericnaval

belki basit bir soru olacak ama işin içinden çıkamadım. 8 adet int1 tipi 1 bitlik değişkeni birleştirip int8 türünde bir byte değişkene almam gerekiyor. Aklıma gelen yolları denedim ama olmuyor.

sizlerin tavsiyeleri ne olur???

M_B

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

Gökhan BEKEN

char bir_baytlik_degisken=0;
bir_baytlik_degisken+=bit1*1;
bir_baytlik_degisken+=bit2*2;
bir_baytlik_degisken+=bit3*4;
bir_baytlik_degisken+=bit4*8;
bir_baytlik_degisken+=bit5*16;
bir_baytlik_degisken+=bit6*32;
bir_baytlik_degisken+=bit7*64;
bir_baytlik_degisken+=bit8*128;
Özel mesaj okumuyorum, lütfen göndermeyin.

XX_CİHAN_XX

#3
Alıntı yapılan: ericnaval - 01 Ekim 2013, 15:09:13
belki basit bir soru olacak ama işin içinden çıkamadım. 8 adet int1 tipi 1 bitlik değişkeni birleştirip int8 türünde bir byte değişkene almam gerekiyor. Aklıma gelen yolları denedim ama olmuyor.

sizlerin tavsiyeleri ne olur???

Merhaba,

Bu iş için en güzel yöntem @M_B arkadaşımızın verdiği linkteki gibi struct ve union yapılarını kullanmaktır.
Eğer bu kavramlara yabancıysanız ve kullanmak istemezseniz @meftun arkadaşımızın önerdiği yönteme benzer bir kod parçacığı aşağıya ekliyorum.
baytt = 0;
if(bit0)baytt |= 1;
if(bit1)baytt |= 2;
if(bit2)baytt |= 4;
if(bit3)baytt |= 8;
if(bit4)baytt |= 16;
if(bit5)baytt |= 32;
if(bit6)baytt |= 64;
if(bit7)baytt |= 128;
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.