どうも。Rubyを2年半ぐらいやってる者です。 もしかすると、 ~0b1100 == 0b0011 となる事を期待されていますか?残念ながら、そうはなりません。 コンピュータは整数値を、 符号(1bit) + 2進数の数(任意の桁数) で管理しています。因みにRuby(の小さい整数を扱うFixnum)では、多くの場合で30桁です。つまり、0b1100は + 000000000000000000000000001100 になります。ビット反転を行うと、符号を逆にし、0と1を入れ替えます。~0b1100は - 111111111111111111111111110011 ということです。 ここで注意して頂きたいのが、負の数の管理方法です。一言で言うと、「その数にいくつ足すと0になるか」です。例えば~0b1100。2進数の部分に1101(2進数で13)を足すと (1) 0000000000000
![【ビット反転】p~0b1100#=>-13になる理由がわかりません、どなたか教えてください。 - どうも。Rubyを2年... - Yahoo!知恵袋](https://cdn-ak-scissors.b.st-hatena.com/image/square/1d07bee2b75b182ba712690f3a3464c29972e28b/height=288;version=1;width=512/https%3A%2F%2Fs.yimg.jp%2Fimages%2Fks%2Fclap%2Fimage%2Fogp%2Fogp.png)