std.bitmanip - bitshift?
via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Dec 13 02:47:15 PST 2014
On Friday, 12 December 2014 at 19:35:26 UTC, Steven Schveighoffer
wrote:
> 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.
>
There's a dedicated >>> operator for unsigned right shift, the
normal >> operator does a signed right shift, i.e. it copies the
left-most bit:
http://dlang.org/expression#ShiftExpression
IMO, for consistency, bitarray should behave the same.
> 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.
Yes, that would be useful.
More information about the Digitalmars-d-learn
mailing list