python原符号、逆符号、補符号
1 0000 0000 0000 0001 、 、
-1 1000 0000 0000 0001
-1 1111 1111 1111 1110
-1 1111 1111 1111 1111
-1 + 1 = 0000 0000 0000 0000 0
-1 +1 -1 +1 0
理由:
10進数1のバイナリ表現形式:0000 0000 0000 0001
数字は2バイト=16 bit
バイナリの正負表現:
正数なら最初のbitは0
すなわち1のバイナリは0000 0000 0000 0001
負数なら最初のbitは1
すなわち-1のバイナリは1000,000,000,000,000,000,000
-1+1=0
バイナリで(1000,000,000,000,000,000,000,000,000,000,000,000,000,000,000
1000万0000 0010を10進数に変えるのは2すなわち-1+1=2?
実はこれは間違っていて、補符号に補符号を加えるべきで、つまり一番前のアルゴリズムです.
-1の符号化1111 1111 1111 1111 1111
1の補コード0000 0000 0000 0001(正数の原コード、逆コード、補コードはすべて同じです)
-1+1が1111 1111 1111+1111+0000 0000 0001=0000 0000 0000 0000 0000つまり0
あとバイナリにマイナス記号は入っていません