Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

byte ters çevirme (lsb to msb)

Başlatan vatandas30, 16 Kasım 2016, 11:08:47

vatandas30

selamlar.
arkadaşlar şöyle bir sorunum var. bir byte ı komple ters nasıl çeviriyoruz.
örnek
00110010 olsun. ben bunu  01001100 yapmak istiyorum.


sadogan

"C" de c flag ile kaydırma yok diye biliyorum
o nedenle tek tek yapman gerekecek.

sadogan

   int8 a=00110010,b;
   b=0;
   if(a&0b00000001)b|=128;
   if(a&0b00000010)b|=64;
   if(a&0b00000100)b|=32;
   if(a&0b00001000)b|=16;
   if(a&0b00010000)b|=8;
   if(a&0b00100000)b|=4;
   if(a&0b01000000)b|=2;
   if(a&0b10000000)b|=1;
böyle bir code ile yapabilirsin.

kralsam


vatandas30

tek komut yok anlaşılan. ben swap gibi belki bir komutu vardır diye düşünmüştüm. teşekkürler

fahri-

CCS C de swap var.

x=0x45;

swap(x);

//x şimdi 0x54


vatandas30

swap ta ilk 4 bitle son 4 bit yer değiştiriyor.

fahri-

Senin sorunu öyle anlamışım  :D

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

vatandas30

bu linke daha önce baktım ama cevabını göremedim.

Salih

aşağıdaki yazdığım yöntemi kullanabilirsin.
a -> b dediğin gibi aktarılmış olur.

y=7;
  for (x=0;x<8;x++)
  {
      if (bit_test(a,x)) bit_set(b,y); else bit_clear(b,y); 
      y--;
  }