Thread overview
Yeni ders: Bit İşlemleri
April 06, 2010

http://ddili.org/ders/d/bit_islemleri.html

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 07, 2010

D'de bit alanlarının (bitfields) bulunmadığını hatırladım. :) Eğer olsaydı, bu dersten sonra doğal olarak sıra ona gelecekti.

Bit alanları kütüphane olanağı olarak çözülmüş:

http://digitalmars.com/d/2.0/phobos/std_bitmanip.html

Bit işlemlerinin sağladığı maskeleme yöntemi ile gerçekleştiriyorlar. O sayfadan kopya bir örnek:

import std.stdio;
import std.bitmanip;

struct Yazmaç
{
   union
   {
       uint değeri;

       mixin(bitfields!(ubyte,  "birinci", 8,
                        ubyte,  "ikinci",  8,
                        ushort, "üçüncü", 16));
   }
}

void göster(uint sayı)
{
   writefln("%032b %08x %10s", sayı, sayı, sayı);
}

void main()
{
   Yazmaç yazmaç;

   yazmaç.birinci = 10;
   yazmaç.ikinci = 20;
   yazmaç.üçüncü = 30;

   göster(yazmaç.değeri);
}

Çıktısı (bit alanlarını belli etmek için aralarına elle '-' yerleştirdim; üçüncü-ikinci-birinci şeklinde duruyorlar):

0000000000011110-00010100-00001010 001e140a    1971210

Henüz birlikleri (union) ve katmaları (mixin) anlatmadığım için derse eklemeyeceğim ama görüldüğü gibi kullanımları çok basit.

Sonuçta, aynı uint içinde üç bit alanı oluşturuluyor. İlk ikisi 8'er bitlik, üçüncüsü 16 bitlik.

Ali

Not: bitfield'ler C'de ve C++'da sorunludur ve taşınabilen olanaklar değildir. Alanların ne sıraları, ne aralarına gelebilecek doldurma bitleri, ne de başka bir şey bilinebilir. :) O yüzden zamanında bir C++ çözümü bulmaya çalışmıştım:

http://acehreli.org/turkcecpp/programlar/bitfield/

O şablonu yazdığım proje sonuçlanmadığı için ne kadar kullanışlı olduğunu da bilemem. :)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

May 05, 2010

Yaşlanıyorum! :)

Bu mesajın hemen hemen aynısı yazdım ve neredeyse gönderecektim. Ama göndermeden önce aramaya karar verdim ve yukarıdaki mesajı buldum... :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]