Challenge: Make a data type for holding one of 8 directions allowing increment and overflow

Basile B. b2.temp at gmx.com
Thu Mar 14 23:47:00 UTC 2024


On Thursday, 14 March 2024 at 23:39:33 UTC, Liam McGillivray 
wrote:
> On Thursday, 14 March 2024 at 01:58:46 UTC, Richard (Rikki) 
> Andrew Cattermole wrote:
>> [...]
>
> I tried to rework the functions to use bitwise operations, but 
> it was difficult to figure out the correct logic. I decided 
> that it's not worth the hassle, so I just changed the value 
> storage from `bool[3]` to `ubyte`. Now it works much more like 
> your version.
> https://github.com/LiamM32/Open_Emblem/blob/c2014ab3f77e89c0cedcd6dbf7f8362ebfac33a9/source/common.d
>
> I did a little reading, so now I understand what it means when 
> you have `&= 7`. But I want to ask, is this faster than `%= 8`? 
> If not, I would like to change it to the latter for readability.

`%=8` will be codegened using slower intructions w/o optimz 
enabled but with `&=7` you directly get the right instruction, 
which does not involves integer division. See 
https://godbolt.org/z/74vbba5aG


More information about the Digitalmars-d-learn mailing list