python intタイプ、比較C/C++int(32 bit、符号あり、符号なし)
2496 ワード
pythonストレージデータはnumberであり、整数型に対してint,byte,longを区別しない
intバイナリで1の個数を求める場合、python負数には次のような操作は適用されません
負数のnをint 32 bitの範囲に制限されないより大きな正数に変換できる
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
の数と同じである