Implement bitwise negation on numeric types #457
Labels
bug
Any difference between this BrightScript implementation and RBI, or otherwise unexpected behavior
interpreter
Affects this project's tree-walking interpreter
stdlib
Affects the standard library included with this BrightScript implementation
RBI supports bitwise negation of integers (and possibly floating-point/double values; needs confirmation), but brs currently doesn't. Let's make that work! Some details from a comment on a PR:
which looks like RBI is using a two's complement representation for numbers and does something slightly unexpected with it.
not someInteger
in RBI seems to takesomeInteger
, convert to a binary representation, perform a bitwise negation on it (all 0s become 1s, all 1s become 0s), then convert back to a decimal representation in the Two's complement understanding. So fornot 0
(using just 4-bits for now because I'm lazy), we have:How strange! In the
not 2 * 3
example, we get:The text was updated successfully, but these errors were encountered: