python intタイプ、比較C/C++int(32 bit、符号あり、符号なし)

2496 ワード

pythonストレージデータはnumberであり、整数型に対してint,byte,longを区別しない
int n1 = 0x80000000; //     , -2147483648
int n2 = 0x7fffffff; //     , 2147483647

printf("%d
"
, n1); printf("%d
"
, n2); printf("%d
"
, (n1-1)); // 1 printf("%d
"
, (n1) & (n1-1));
n1 = 0x80000000
n2 = 0x7fffffff
print n1 # 2147483648
print n2 # 2147483647

n3 = -2147483648
n4 = 2147483647
print n3
print n4

print (n3 - 1) # -2147483649

n3 = n3 & 0xffffffff #      ,  int     
print n3 # 2147483648
print (n3 - 1) # 2147483647

n5 = -2147483647
n5 = n5 & 0xffffffff #      ,  int     
print n5 # 2147483649
print (n5 - 1) # 2147483648

intバイナリで1の個数を求める場合、python負数には次のような操作は適用されません
n & (n-1)

負数のnをint 32 bitの範囲に制限されないより大きな正数に変換できる
n & 0xffffffff
-2147483648(int範囲)と2147483648(非int範囲)の2つの数のバイナリ1の数と同じである