Anuken/Mindustry-Suggestions

Adding a bitwise operation

ZeleniyKustik opened this issue · 4 comments

Describe the content or mechanics you are proposing.

We specify the bit number we want to start reading from and the total number of bits we want to read.
Work example:
We have a 64-bit number .....1111111100.
We specify the bit number [2].
We also specify the number of bits we want to read [8].
As a result, we cut off all unnecessary bits and get 255 as output.

Describe how you think this content will improve the game. If you're proposing new content, mention how it may add more gameplay options or how it will fill a new niche.

This command will simplify operations with bits, which will allow you to write code based on binary logic faster. For example, a cellular automaton or data compression into something like an archive with the possibility of unzipping. Or just Tetris

Before making this issue, check the boxes below to confirm that you have acknowledged them.

  • I have checked the Trello to make sure my suggestion isn't planned or implemented in a development version.
  • I am familiar with all the content already in the game or have glanced at the wiki to make sure my suggestion doesn't exist in the game yet.
  • I have read README.md to make sure my idea is not listed under the "A few things you shouldn't suggest" category.

really ez(if you get a predefined mask its even faster)

op shr tmp data start
op shl mask 1 length
op sub mask mask 1
op and out tmp mask

and if you didnt notice mlog was supposed to be assembly-like and i dont think processors have extract x bits from y offset operation

Thanks for the optimization and the reply

I don't understand that. ⬆️But, I do understand that if you use the AND operation on a number and 15, then it will get you the first four bits of the number because of this:

(15 in binary) 00001111
AND
(28 in binary) 00011100
->
(result in binary)00001100

You can do the same on any (2^x)-1 because they will all be a number of 0's with only 1's afterward.

I don't understand that. ⬆️But, I do understand that if you use the AND operation on a number and 15, then it will get you the first four bits of the number because of this:

(15 in binary) 00001111 AND (28 in binary) 00011100 -> (result in binary)00001100

You can do the same on any (2^x)-1 because they will all be a number of 0's with only 1's afterward.

1<<n is 2^n
so (1<<n)-1 is (2^n)-1
and the data is just shifted right to get the right bits