我需要在Ruby中获取整数的第n位,可以是有符号或无符号的。
x = 123 # that is 1111011
n = 2 # bit 2 is ...0
以下代码在一般情况下无法正常工作:
x.to_s(2)[-(n+1)] #0 good! but...
由于负数没有用2进制补码表示:
-123.to_s(2) # "-1111011"
那么,如何继续呢?
我需要在Ruby中获取整数的第n位,可以是有符号或无符号的。
x = 123 # that is 1111011
n = 2 # bit 2 is ...0
x.to_s(2)[-(n+1)] #0 good! but...
由于负数没有用2进制补码表示:
-123.to_s(2) # "-1111011"
a=2; a[0] = 1; a #=>3
? - Mirror318Integer
是不可变的。 - Jörg W Mittag