ホームページ  >  記事  >  バックエンド開発  >  Pythonで否定演算子を使用する方法

Pythonで否定演算子を使用する方法

WBOY
WBOY転載
2023-04-30 08:22:143234ブラウズ

    Python 否定演算子

    ~: ビット単位の否定演算子: データの各バイナリ ビットを否定します。つまり、1 を 0 に変換し、0 を 1 に変更します。 。

    ~x は -x-1

    1 と同様、計算根拠

    • ①正の数の元コード、逆コード、補コードはすべて同じ

    • ②負の数の補数は、符号ビットが変更されず、残りのビットが反転され、1 が追加されることです

    • ③元のコードの補数を見つける:Negate、1

    • ④元のコードを見つける補数:Negate、1

    • #⑤負の数は補数に格納

    • ⑥元のコードに対して反転演算が実行されます

    • ⑦符号ビット、1は負の数を表し、0は正の数を表します

    2. 例

    ~(-2)

    まず、コンピュータにおける -2 のバイナリ形式を知る必要があります。 ⑤と②から、

    • -2 元のコード: 1000 0000 0000 0010

    • -2 負のコード: 1111 1111 1111 がわかります。 1101 #符号ビットは変更されません。否定してください

    • -2 の補数: 1111 1111 1111 1110 #補数コード = 逆コード + 1

    1111 1111 1111 1110 は、コンピューターの -2 のプロトタイプです

    次に、それを否定し始めます。符号ビットは変更されません。

    ビット単位の否定: 0000 0000 0000 0001

    は明らかに正の数であり、元のコードはそれ自体であるため、出力は 1.

    ~2

    2 元のコード、逆コード、補数コード: 0000 となります。 0000 0000 0010

    ビット単位の否定: 1111 1111 1111 1101

    これが負の数の場合はどうすればよいですか?直接聞いてもいいですか?

    明らかにこれはあり得ません、⑥は、否定演算の計算結果は元のコードで実行されます、⑤も、負の数は補数コードに格納されます

    1111 1111 1111 1101 です。 0000 0000 0000 0010 の補数ですが、必要なのは結果であり、コンピューター内のプロトタイプではありません。

    がちょうどいいです。④ 元のコードを見つけるための補数: negate、1

    • Negate: 1000 0000 0000 0010

    • Add 1: 1000 0000 0000 0011

    つまり、元のコードが得られます。 , 結果を計算できます

    1000 0000 0000 0011 = -3

    つまり、反転は非常に簡単ですが、反転が元のコードであるかどうか、および結果が次のコードであるかどうかに注意する必要があります。直接計算できます

    Python 数値反転問題~

    Python では、反転記号を使用しても~ 想像した結果が得られません。ルールを要約すると、 (反転された値) です。 = - (反転前の値) -1

    分析してみましょう

    たとえば、1 を反転すると、1 の 8 ビット バイナリ表現は 0000 0001 となり、反転後の結果は次のようになります。 1111 1110、コンピュータの場合、1 で始まる 2 進数は負の数を表します。では、1111 1110 は負の値として正確に何を表しますか? この値を知りたい場合は、その補数を見つけることができます。つまり、最初に補数を取得します。 : 0000 0001、1:0000 0010 を追加します。これは、1111 1110 の元のコードが 0000 0010 であり、正の数 2 であることを示します。したがって、1111 1110 は負の数 -2 を表します

    これは別の例です

    はい- 2 は反転されています。-2 のバイナリ表現は 2 の補数、つまり 0000 0010 > 1111 1101 > 1111 1110 です。-2 のバイナリ表現は 1111 1110 です。反転すると 0000 になります。 0001。明らかに、反転後の の値は 1 なので、~(-2)=1、~1=-2

    要約は次のようになります: (否定後の値) = -(否定前の値)-1

    以上がPythonで否定演算子を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。