1 byte'lık alana 2 byte lık veriyi sıkıştırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
zero_g
Üye
Mesajlar: 56
Kayıt: 11 Şub 2004 11:52

1 byte'lık alana 2 byte lık veriyi sıkıştırma

Mesaj gönderen zero_g »

slm arkadaşlar

beni yapmak istediğim şey şu hepinizin bildiği gibi pozitif sayılar
0,1,2,3,4,5,6,7,8,9 sayılarının 8 bitin ilk 4 biti ile ifade edilir örneğin

1 sayısı =0000 0001
2 sayısı =0000 0010
3 sayısı =0000 0011 gibi

şimdi benim yapmak istediğim

x:byte değişkenine 23 sayısını yüklemek ve bunu çözümleyebilmek

x =0010 0011

özetleyecek olursam x in ilk dort bitine 3 yerleştirmek; 2. 4 bitine de 2 yi yerleştirmek. Bunuda ayrı ayrı çözümleyebilmek.

şimdiden yardımlarınız için tşk ederim hepinize iyi çalışmalar dilerim
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

hepinizin bildiği gibi pozitif sayılar
0,1,2,3,4,5,6,7,8,9 sayılarının 8 bitin ilk 4 biti ile ifade edilir örneğin
yanlış biliyorsunuz

1) tamsayı integer en az 16 bit 2 byte dan oluşur
2) eğer veritipi işaretliyse en soldaki bit işaret (- +) manasında kullanılır.
zero_g
Üye
Mesajlar: 56
Kayıt: 11 Şub 2004 11:52

Mesaj gönderen zero_g »

dikkat ettiysenin ben byte tipi veriden bahsettim ve pozitif sayı diye belirttim.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
önce sayıyı 0001111 ile and lersin burdan 3 ü bulursun
sonra sayıyı shr(shift right) ile sağa kaydırırsın gene 00001111 ile andlersin bu seferde 2 yi bulursun.
Not: bir sayının negatif olup olmadığını en soldaki bit belirler. Bu da kullandığınız veritipine göre değişir.
int = 10000001 = -1 iken
word = 10000001 = 81 olur. arkadaşların kafası karışmasın.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
zero_g
Üye
Mesajlar: 56
Kayıt: 11 Şub 2004 11:52

Mesaj gönderen zero_g »

aslangeri arkadaşım vermiş olduğun bilgin için çok tşk ederim.
ama bir örnek uygulama ile gösterirsen çok sevirinirim

Yinede tşk ederim.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
uygulama hazırlayacak vaktim yok ama sana gidiş yolunu gösterdim. Biraz daha açıklamaya çalışıyım.
  • 1. Önce vatandaş sayıyı girer bunu bir edit ile yapabiliriz.(örnekte 23)
    2. Sonra bu sayıyı nın mod 10 unun alırız. (elimize 3 geldi degisken olarak adina sayi1 diyelim).
    3. Önceden tanımladığımız (X) değişkenin sayi1 i atarız x=3 oldu.
    4. ilsayımız olan (23) ün bu sefer div 10 unu alırız (elimize 2 geldi degisken olarak sayi2 diyelim)
    5. sayi2 yi 4 kere shift left yapariz (bakiniz delphi help shl)
    6. X:= x and sayi2;// bu aynı zamanda x:=x+sayi2 oluyor. (değerlerinden dolayı yoksa normalde böyle bir eşitlik söz konusu değil.
devamını halledersin artık
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Cevapla