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
あとバイナリにマイナス記号は入っていません