summaryrefslogtreecommitdiff
path: root/integer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'integer.rb')
-rw-r--r--integer.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/integer.rb b/integer.rb
index b9cde8f390..d18494f42f 100644
--- a/integer.rb
+++ b/integer.rb
@@ -1,4 +1,29 @@
class Integer
+ # call-seq:
+ # -int -> integer
+ #
+ # Returns +int+, negated.
+ def -@
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'rb_int_uminus(self)'
+ end
+
+ # call-seq:
+ # ~int -> integer
+ #
+ # One's complement: returns a number where each bit is flipped.
+ #
+ # Inverts the bits in an Integer. As integers are conceptually of
+ # infinite length, the result acts as if it had an infinite number of
+ # one bits to the left. In hex representations, this is displayed
+ # as two periods to the left of the digits.
+ #
+ # sprintf("%X", ~0x1122334455) #=> "..FEEDDCCBBAA"
+ def ~
+ Primitive.attr! 'inline'
+ Primitive.cexpr! 'rb_int_comp(self)'
+ end
+
def abs
Primitive.attr! 'inline'
Primitive.cexpr! 'rb_int_abs(self)'