I suppose the following is not a bug, but confusing it is:

```
void main()
{
    import std.stdio;
    import std.bitmanip;
    BitArray ba = [1, 1, 1, 1, 1, 1, 1, 1];
    writeln(ba);        // [1, 1, 1, 1, 1, 1, 1, 1]
    ba >>= 4;             // right shift
    writeln(ba);        // [1, 1, 1, 1, 0, 0, 0, 0] bits shifted left
}```

I suppose this is because the array is printed left-to-right, whereas the bits in a byte are typically ordered right-to-left. I suppose I should interpret the bits in the array to increase in significance with increasing index (little endian) and that right-shift means a shift towards less significance (which is to the right in big endian).

The documentation of <<= and >>= [1] however just talks about left and right, without defining left and right or clarifying that the directions are reversed from how the array is printed.

Is there something I have missed?

[1] https://dlang.org/phobos/std_bitmanip.html#.BitArray.opOpAssign.2

Reply via email to