On 12/12/14 2:17 PM, H. S. Teoh via Digitalmars-d-learn wrote:
On Fri, Dec 12, 2014 at 11:13:38AM -0500, Steven Schveighoffer via
Digitalmars-d-learn wrote:
On 12/12/14 8:39 AM, Trollgeir wrote:
http://dlang.org/phobos/std_bitmanip.html
Does anyone know how to bit-shift a BitArray?
I'm trying to make spikes in a neural network travel along the
bits as they have various lengths.
That is a surprising omission from a bit-oriented type...
You also cannot opSlice a BitArray. Nice for enhancement requests, if
you want to add them to the issue tracker.
[...]
I've started working on an implementation of this... but it's not very
clear what the correct semantics should be. For example, if my starting
BitArray b is 1101, say, what should be the result after b>>=1? Should
it be 0110, 110, or 01101?
0110
In other words, I would assume the same semantics as an unsigned int.
In other other words, it's like each bit moves one to the right, and the
bit that has no source gets a 0.
It may be useful to add some other functions, such as roll, which would
move bits that fall off the end back onto the top.
And maybe expose shift as a function, which allows you to specify the
bit value (or maybe range of bits) that should be shifted in from the
other side.
Note, I would not allow just opBinary, only opBinaryAssign. No reason to
construct temporary BitArrays.
-Steve