1. ホーム
  2. python

[解決済み] ビット単位の演算 単項~(反転)

2023-07-02 01:38:03

質問

私は ~ 演算子について少し混乱しています。コードは以下になります。

a = 1
~a  #-2
b = 15
~b  #-16

どのように ~ はどのように動作するのでしょうか?

と思ったのですが ~a のようなものでしょう。

0001 = a
1110 = ~a 

なんでやねん

どのように解決するのですか?

おっしゃるとおりです。それは 2 の補数 整数表現によるものです。

16ビットでは、1は次のように表現されます。 0000 0000 0000 0001 . 反転させると 1111 1111 1111 1110 となり,-2 となる。 同様に,15 は 0000 0000 0000 1111 . 反転させると 1111 1111 1111 0000 となり、-16となります。

一般的には ~n = -n - 1