負の FixNum の符号なし解釈を判断するにはどうすればよいですか?
# unexpected, true
(~0b01111011).to_s(2) == ("-" + (~0b01111011).abs.to_s(2))
# expected, false
~0b01111011 == 0b10000100
次のような関数をどのように記述しますか。
123.unsigned_not(8) == 132
または、次のようにします。
-124.unsigned(8) == 132
編集:文字列を介してこれを行うことができますが、解決策は満足のいくものではありません
class Fixnum
def unsigned_not(bits=16)
to_s(2).rjust(bits,'0').gsub(/[01]/, '0' => '1', '1' => '0').to_i(2)
end
end