Hi,
I need to invert the bits of an integer but I can't find the bitwise NOT operator.
I am trying the following alternative to get inverted the 28 lower bits.
Is this a valid alternative?
Thanks,
Osmany
Hi,
I need to invert the bits of an integer but I can't find the bitwise NOT operator.
I am trying the following alternative to get inverted the 28 lower bits.
Is this a valid alternative?
Thanks,
Osmany
Do we have to worry about the integer being negative?
Here's some sample conversion code for you.
Note that AI2 binary 1 and 0 are text unless working with bitwise operators.
Hi @ABG,
I was asking for validation because I don't know the internal representation of numbers in appinventor.
I am representing sets using bits of integers. The universe of elements are the numbers from 0 to 27. If, for example, bits 0 and 10 of an integer (representing a set) are active (0x00000401 as hexadecimal, 1025 as decimal), then the set is {0, 10}.
The complement of that set would be the bitwise NOT operator, it should be the set {0...27} - {0,10} which as a number would be (0xFFFFFBFE as hexadecimal, -1026 as decimal).
As you can see here, number could result negative.
I require the best possible performance, working with strings is not an option, nor with lists. Rewriting my example without using strings
where the value 268435455 is 0x0FFFFFFF in hex.
Thanks @nishyanthkumar, i've rewrote my code as procedure to invert lower 28 bits. This operator works for that amount of bits.
BEST REGARDS,
Osmany
This is how far you are from bare metal:
from
Thanks @ABG,
I had already read that post, it doesn't say how many bits long an integer is, that way I could know what number I do an XOR with, so my alternative works in a general way.
Maybe @ewpatton could help why AppInventor doesn't provide the bitwiseNOT operator and and what alternative to use.
Thanks for your time,
Osmany
Someone could certainly implement one as Scheme provides a bitwise-not
function over its IntNum type.
Since the negation block performs two's complement on the number, you should be able to do bitwise negation on integers using the following:
Thank you very much @ewpatton,
That works very well. The inclusion of this operator should be proposed.
Best regards.
Osmany
But how many 1's are there in bitwisenot(0)?
Hi @ABG,
That's the question.... How many bits long is an integer?
As many bits as the representation of the integer -1 needs or supports.
Maybe this is why bitwise-NOT operator is not implemented.
In my case I'm only analyzing the lower 28 bits, and the solution from @ewpatton works well.
This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.