Bit ağırlıklarını (LSB-MSB) ters çevirme

Başlatan OG, 20 Şubat 2007, 07:50:56

OG

PBP da bu işlem için kısa bir komut veya hazır bir rutin veya aralarında kullanılabilecek matematiksel bir bağıntı varmıdır;

Şöyle açıklayayım

A sayısı= 11110001
LSB ile MSB ağırlıklarını yer değiştirince
A sayısı= 10001111

Yani
1. bit 8. bit oldu
2. bit 7. bit oldu
3. bit 6. bit oldu
4. bit 5. bit oldu
5. bit 4. bit oldu
6. bit 3. bit oldu
7. bit 2. bit oldu
8. bit 1. bit oldu
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Ziya

OG hocam, sanırım bu iş görür. PBP'ya uyarlayabilirsiniz.
#assembler
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
#endasm
 return B
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

OG

for i=0 to 7
C=7-i
B.0(i)=A.0(C)           ' A dan alıp B ye yüklüyoruz
next i


Hocam yukarıdaki şukadarcık döngü 58 word yük getiriyor.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

Ziya

Benim verdiğim 16+return+fonksiyon argumanları kadar bir yük getirir. Carry üzerinden yerdeğişim yapıyor. Belki döngü içerisine alınsa daha kısa da olabilir.
for i= 7 to 0 step -1
  #assembler
   rlf a
   rrf b
  #end asm
next i
Bu günden sonra hiç kimse sarayda, divanda, meclislerde ve seyranda Türk dilinden başka dil kullanmaya. (13 Mayıs 1277) Karamanoğlu Mehmet Bey

XX_CİHAN_XX

Alıntı yapılan: "Ziya"OG hocam, sanırım bu iş görür. PBP'ya uyarlayabilirsiniz.
#assembler
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
rlf A
rrf B
#endasm
 return B
bencede en iyi cozum bu gıbı gozukuyor.
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.

Klein


SpeedyX

Alıntı yapılan: "Klein"swapf
:) swapf olmaz

Klein


Klein

evet olmaz.
@og  hocam sen de öyle bir örnek vermişsin ki  nibble de çevirsen, tam ters de çevirsen aynı oluyo.

mech

Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Şarttır

OG

Alıntı yapılan: "Klein"öyle bir örnek vermişsin ki  nibble de çevirsen, tam ters de çevirsen aynı oluyo.
Hocam denk gelmiş.


Bazen böylesine ihtiyaclar cıkabiliyor. Aslında matematiğin sihirli bir dünyası var. Enteresan kısa yollu bağıntılar bulunabiliyor.

mech, o komut rev değilde reverse olması lazım fakat yaptığı iş çok başka.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

SpeedyX

@OG hocam, bence en doğru ve en kısa yolu Ziya hocam vermiş. Bunun güzel bir komutu olabilir ama işin assembly tarafı herzaman daha uzun olacaktır.

M_B

Merhabalar;

4 bitlik veriyi  ters cevirmem gerekiyor   Bu işlemi nasıl yapabilirim

Örnek:
1010 verimizin msb sinden tutup 180 derece saga dondurduğumuzde olusan

yeni veri = 0101

1000 =8  dondurdugumde 0001 =1 oluyor
0100 =4  dondurdugumde 0010 =2 oluyor
0010 =2  dondurdugumde 0100 =4 oluyor
0001 =1  dondurdugumde 0010 =8 oluyor

1010 =A  dondurdugumde 0101 =5 oluyor
0101 =5  dondurdugumde 1010 =A oluyor
0111 =7  dondurdugumde 1110 =E oluyor

ortak bir  baglantı kurupta formul cıkaramadım.



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

z


Matemiksel bağıntı basit;

giren bit ile çıkan bitin çarpımı daima 128 dir.

Örneğin 1 girerse 128 çıkmalıdır.

2 girerse 64 çıkmalıdır.

32 çıktıysa 4 girmiştir.

Gibi...
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

M_B

@z hocam,
ben sadece  mevcut olan 4 bit üzerinde işlem yapmak istiyorum.
yanı sayım su sekılde diyelim,

0000_1000  =8  (soldaki 0 li kısma dokunmuyoruz o degerle işimiz yok )
0000_0001 =1 
şekline donmesini istiyorum.
dediğiniz yontemi bir inceleyecem.



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