D 2.0
About Japanese Translation

Last update Thu Oct 28 17:54:37 2010

core.bitop

このモジュールは様々なビット演算を提供します。

License:
Boost License 1.0.

Authors:
Don Clugston, Sean Kelly, Walter Bright

Source:
core/bitop.d
int bsf(uint v);
v の bit 0 から始めて、 最初に立っているbitを探します。

Returns:
最初に立っているビット番号。 vが0の場合の結果は未定義です。

int bsr(uint v);
v の最上位ビットから始めて、 最初に立っている bit を探します。

Returns:
最初に立っているビット番号。 vが0の場合の結果は未定義です。

Example:
 import core.bitop;

 int main()
 {
     uint v;
     int x;

     v = 0x21;
     x = bsf(v);
     printf("bsf(x%x) = %d\n", v, x);
     x = bsr(v);
     printf("bsr(x%x) = %d\n", v, x);
     return 0;
 }

Output:
bsf(x21) = 0
bsr(x21) = 5

int bt(uint* p, uint bitnum);
ビット判定
int btc(uint* p, uint bitnum);
ビットを判定してから反転
int btr(uint* p, uint bitnum);
ビット判定してから、そのビットを0にする
int bts(uint* p, uint bitnum);
ビット判定してからそのビットを1にセット(Test and Set)

Parameters:
uint* p uint の配列を指す NULL でないポインタ
index ビット番号で、p[0] の bit 0 から始まって増加していく番号です。 言い方を変えると、次のビットに対応します:
    p[index / (uint.sizeof*8)] & (1 << (index & ((uint.sizeof*8) - 1)))

Returns:
ビットが立っていたら非0、 いなければ0を返します。

Example:
    import core.bitop;

    int main()
    {
        uint array[2];

        array[0] = 2;
        array[1] = 0x100;

        printf("btc(array, 35) = %d\n", <b>btc</b>(array, 35));
        printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]);

        printf("btc(array, 35) = %d\n", <b>btc</b>(array, 35));
        printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]);

        printf("bts(array, 35) = %d\n", <b>bts</b>(array, 35));
        printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]);

        printf("btr(array, 35) = %d\n", <b>btr</b>(array, 35));
        printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]);

        printf("bt(array, 1) = %d\n", <b>bt</b>(array, 1));
        printf("array = [0]:x%x, [1]:x%x\n", array[0], array[1]);

        return 0;
    }

Output:
    btc(array, 35) = 0
    array = [0]:x2, [1]:x108
    btc(array, 35) = -1
    array = [0]:x2, [1]:x100
    bts(array, 35) = 0
    array = [0]:x2, [1]:x108
    btr(array, 35) = -1
    array = [0]:x2, [1]:x100
    bt(array, 1) = -1
    array = [0]:x2, [1]:x100
    

uint bswap(uint v);
4バイトのuint型中の各バイトを、前と後ろで交換します。つまり byte0 は byte3 になり、byte1 は byte2 になり、 byte2 は byte1 になり、byte3 は byte0 になります。
ubyte inp(uint port_address);
ushort inpw(uint port_address);
uint inpl(uint port_address);
I/Oポート port_address を読みとります。
ubyte outp(uint port_address, ubyte value);
ushort outpw(uint port_address, ushort value);
uint outpl(uint port_address, uint value);
I/Oポート port_addressvalue を書き込みその値を返します。
int popcnt(uint x);
32bit整数の立っているビットの個数を返します

uint bitswap(uint x);
32bit整数のビット順を逆転します