int【整数型】3.1 / 3.2 / 3.4 / 3.6~3.8 / 3.103.12
メモ
概要
〔 例 〕- long【長整数型】は int【整数型】に統合 3.0
- 桁数制限なし
- 桁の区切りにアンダースコア(_) を利用可 3.6
変換
- 文字列 ⇒ int【整数型】
- int【型変換】参照
- int【整数型】 ⇒ 文字列〔 例 〕
下記以外の寄せ等は、 str【文字列型】の format【書式化】の置換フィールドを参照
変換先 | 組み込み関数 | フォーマット済み文字列リテラル (f'~') 3.6・ str.format【書式化】 の置換フィールド | |||
---|---|---|---|---|---|
進数指定 (type:表現型) | プレフィックス有無 (#:別形式) | 区切り (grouping_option: グルーピング指定) | ゼロパディング (0:ゼロパディング) (width:最小フィールド幅) | ||
10進数 | str【文字列変換】 | d【10進数】 省略【10進数】 | カンマ(,):3桁毎にカンマ アンダースコア(_) 3.6:3桁毎に '_' | 両方指定:ゼロパディング | |
2進数 | bin【2 進文字列変換】 プレフィックス:0b | b【2進数】 | 指定有:0b | アンダースコア(_) 3.6:4桁毎に '_' | |
8進数 | oct【8 進文字列変換】 プレフィックス:0o | o【8進数】 | 指定有:0o | ||
16進数 | hex【16 進文字列変換】 プレフィックス:0x a ~ f は小文字 | x【16進数 (小文字)】 X【16進数 (大文字)】 | 指定有:0x 指定有:0X |
算術演算・ビット演算
- float【浮動小数点数型】との演算:float【浮動小数点数型】に変換
- complex【複素数型】との演算:complex【複素数型】に変換
優先順位 | 演算 | 備考 |
---|---|---|
高い | x ** y | x の y 乗 (参照:その他演算のpow【べき乗・剰余】) |
+x | x そのまま | |
-x | x の符号反転 | |
~x | x のビット反転 | |
x * y | x と y の積 | |
x / y | x と y の商 | |
x // y | x と y の商を切り下げ | |
x % y | x / y の剰余 | |
x + y | x と y の和 | |
x - y | x と y の差 | |
x << n | x を n ビット左シフト | |
x >> n | x を n ビット右シフト | |
x & y | x と y のビット論理積 | |
x ^ y | x と y のビット排他的論理和 | |
x | y | x と y のビット論理和 | |
低い | 比較演算 |
比較演算
- 連鎖可能 (例:x < y < z)
- 全て同じ優先順位
演算 | 備考 |
---|---|
x < y | より小さい |
x <= y | 以下 |
x > y | より大きい |
x >= y | 以上 |
x == y | 等しい |
x != y | 等しくない |
x is y | 同一オブジェクト |
x is not y | 同一オブジェクトでない |
その他演算
リテラル・コンストラクタ・メソッド
メソッド | 関連 |
---|---|
リテラル | |
リテラル (10進数・2進数・8進数・16進数) | |
コンストラクタ・型変換 | |
int([x]) int(x, base=10) | コンストラクタ 型変換 |
メソッド | |
as_integer_ratio( ) 3.8 | 分数表現 (分子, 分母) 分母:1 |
bit_length( )3.1 | 2進法のビット数 |
bit_count( ) 3.10 | 2進法の1の数 |
classmethod from_bytes(bytes, byteorder, *, signed=False) 3.2 | バイト列の整数表現 |
is_integer( )3.12 | 整数値判定 戻り値:True ※ダックタイピング互換性:float.is_integer( ) |
to_bytes(length, byteorder, *, signed=False) 3.2 | バイト列変換 |
外部リンク
例 (概要)
n = 0xFFFF_FFFF
print(n)
# 出力:4294967295
n = 1234567890_1234567890_1234567890_1234567890
print(n)
# 出力:1234567890123456789012345678901234567890
例 (変換)
# 10進数
n10 = 1234567890
print(n10)
# 出力:
print(str(n10))
# 出力:1234567890
print(f'{n10:,}')
# 出力:1,234,567,890
print(f'{n10:_}')
# 出力:1_234_567_890
print(f'{n10:012}')
# 出力:001234567890
print('{:,}'.format(n10))
# 出力:1,234,567,890
print('{:_}'.format(n10))
# 出力:1_234_567_890
print('{:012}'.format(n10))
# 出力:001234567890
# 2進数
n2 = 0b1111_0000
print(n2)
# 出力:240
print(bin(n2))
# 出力:0b11110000
print(f'{n2:b}')
# 出力:11110000
print(f'{n2:#b}')
# 出力:0b11110000
print(f'{n2:_b}')
# 出力:1111_0000
print(f'{n2:012b}')
# 出力:000011110000
print(f'{n2:#021_b}')
# 出力:0b0000_0000_1111_0000
print('{:b}'.format(n2))
# 出力:11110000
print('{:#b}'.format(n2))
# 出力:0b11110000
print('{:_b}'.format(n2))
# 出力:1111_0000
print('{:012b}'.format(n2))
# 出力:000011110000
print('{:#021_b}'.format(n2))
# 出力:0b0000_0000_1111_0000
# 8進数
n8 = 0o1234567
print(n8)
# 出力:342391
print(oct(n8))
# 出力:0o1234567
print(f'{n8:o}')
# 出力:1234567
print(f'{n8:#o}')
# 出力:0o1234567
print(f'{n8:_o}')
# 出力:123_4567
print(f'{n8:012o}')
# 出力:000001234567
print(f'{n8:#016_o}')
# 出力:0o0000_0123_4567
print('{:o}'.format(n8))
# 出力:1234567
print('{:#o}'.format(n8))
# 出力:0o1234567
print('{:_o}'.format(n8))
# 出力:123_4567
print('{:012o}'.format(n8))
# 出力:000001234567
print('{:#016_o}'.format(n8))
# 出力:0o0000_0123_4567
# 16進数
n16 = 0x123456789ABCDEF
print(n16)
# 出力:81985529216486895
print(hex(n16))
# 出力:0x123456789abcdef
print(f'{n16:x}', f'{n16:X}')
# 出力:123456789abcdef 123456789ABCDEF
print(f'{n16:#x}', f'{n16:#X}')
# 出力:0x123456789abcdef 0X123456789ABCDEF
print(f'{n16:_x}', f'{n16:_X}')
# 出力:123_4567_89ab_cdef 123_4567_89AB_CDEF
print(f'{n16:020x}', f'{n16:020X}')
# 出力:00000123456789abcdef 00000123456789ABCDEF
print(f'{n16:#026_x}', f'{n16:#026_X}')
# 出力:0x0000_0123_4567_89ab_cdef 0X0000_0123_4567_89AB_CDEF
print('{:x}'.format(n16), '{:X}'.format(n16))
# 出力:123456789abcdef 123456789ABCDEF
print('{:#x}'.format(n16), '{:#X}'.format(n16))
# 出力:0x123456789abcdef 0X123456789ABCDEF
print('{:_x}'.format(n16), '{:_X}'.format(n16))
# 出力:123_4567_89ab_cdef 123_4567_89AB_CDEF
print('{:020x}'.format(n16), '{:020X}'.format(n16))
# 出力:00000123456789abcdef 00000123456789ABCDEF
print('{:#026_x}'.format(n16), '{:#026_X}'.format(n16))
# 出力:0x0000_0123_4567_89ab_cdef 0X0000_0123_4567_89AB_CDEF
リテラル・コンストラクタ・型変換
メモ
- リテラル
- 紛らわしい8進数表記は不可 3.0 (例:0123)
(C言語で有効なプリフィックスなしの8進数)
- 紛らわしい8進数表記は不可 3.0 (例:0123)
構文
10進数
N~N
(N:0~9 / 0以外:先頭の0不可)
2進数
0bN~N
0BN~N
(N:0 | 1)
8進数
0oN~N
0ON~N
0N~N の形式は不可 3.0
(N:0~7)
16進数
0xN~N
0XN~N
(N:0~9 | a~f | A~F)
・10進数を除くNの先頭 及び N の間に1つのアンダースコア(_) 可 3.6
・符号については、算術演算 参照
int([x※1])
int(x※2, base=10)
戻り値整数オブジェクト
x (位置引数のみ3.7 )※1数値 (省略:0)
float【浮動小数点数】0 に近い側へ切り捨て
(定義があれば x.__int__ 呼び出し)
(x.__int__ が存在しない場合、定義があれば x.__index__ 呼び出し 3.8)
x (位置引数のみ3.7 )※2文字列・bytes【バイト配列 (不変)】・bytearray【バイト配列 (可変)】
符号指定可 (+・-)
プリフィックス可 (0b・0B・0o・0O・0x・0X)
前後にスペース可
区切りのアンダースコア(_)可 3.7
base基数 (整数:0・2~36)
0自動認識 (明示的な指定が必要)
(base.__int__ base.__index__ 3.4 メソッドが存在する場合、呼び出し)
例
# 10進数
n10_1 = 123456789
print(n10_1)
# 出力:123456789
n10_2 = 123_456_789
print(n10_2)
# 出力:123456789
# 2進数
n2_1 = 0b11110000
print(bin(n2_1))
# 出力:0b11110000
n2_2 = 0B_1111_0000
print(bin(n2_2))
# 出力:0b11110000
# 8進数
# n8_0 = 01234567 # SyntaxError
n8_1 = 0o1234567
print(oct(n8_1))
# 出力:0o1234567
n8_2 = 0O_0123_4567
print(oct(n8_2))
# 出力:0o1234567
# 16進数
n16_1 = 0x123456789abcdef
print(hex(n16_1))
# 出力:0x123456789abcdef
n16_2 = 0X_0123_4567_89AB_CDEF
print(hex(n16_2))
# 出力:0x123456789abcdef
n_1 = int()
print(n_1)
# 出力:0
n_2 = int(123456789)
print(n_2)
# 出力:123456789
n_3 = int(1234.5678)
print(n_3)
# 出力:1234
n10_1 = int('123456789')
print(n10_1)
# 出力:123456789
n10_2 = int(' +123456789 ')
print(n10_2)
# 出力:123456789
n10_3 = int('123_456_789')
print(n10_3)
# 出力:123456789
n2_1 = int('11110000', 2)
print(f'{n2_1:#_b}')
# 出力:0b1111_0000
n2_2 = int(' 0b11110000 ', 2)
print(f'{n2_2:#_b}')
# 出力:0b1111_0000
n2_3 = int('0b_1111_0000', 2)
print(f'{n2_3:#_b}')
# 出力:0b1111_0000
n8_1 = int('1234567', 8)
print(f'{n8_1:#_o}')
# 出力:0o123_4567
n8_2 = int(' 0o1234567 ', 8)
print(f'{n8_2:#_o}')
# 出力:0o123_4567
n8_3 = int('0o_123_4567', 8)
print(f'{n8_3:#_o}')
# 出力:0o123_4567
n16_1 = int('123456789ABCDEF', 16)
print(f'{n16_1:#_x}')
# 出力:0x123_4567_89ab_cdef
n16_2 = int(' 0x123456789ABCDEF ', 16)
print(f'{n16_2:#_x}')
# 出力:0x123_4567_89ab_cdef
n16_3 = int('0x_123_4567_89AB_CDEF', 16)
print(f'{n16_3:#_x}')
# 出力:0x123_4567_89ab_cdef
n36 = int('z', 36)
print(n36)
# 出力:35
n_1 = int('123456789', 0)
print(n_1)
# 出力:123456789
n_2 = int('0b11110000', 0)
print(bin(n_2))
# 出力:0b11110000
n_3 = int('0o1234567', 0)
print(oct(n_3))
# 出力:0o1234567
n_4 = int('0x123456789ABCDEF', 0)
print(hex(n_4))
# 出力:0x123456789abcdef
bit_length【2進法のビット数】3.1
bit_count【2進法の1の数】3.10
メモ
メソッド | 備考 |
---|---|
bit_length【2進法のビット数】 | 符号と先頭の 0 は除外 (0の場合は0) |
bit_count【2進法の1の数】 |
構文
int.bit_length( ) 3.1
戻り値2進法のビット数 (符号と先頭の 0 は除外)
int.bit_count( ) 3.10
戻り値2進法の1の数
例
b_1 = 0b1111_0000
print(b_1.bit_length())
# 出力:8
b_2 = 0b0011_0011
print(b_2.bit_length())
# 出力:6
b_3 = 0
print(b_3.bit_length())
# 出力:0
b_1 = 0b1111_0000
print(b_1.bit_count())
# 出力:4
b_2 = 0b0011_0011
print(b_2.bit_count())
# 出力:4
b_3 = 0
print(b_3.bit_count())
# 出力:0
to_bytes【バイト列変換】3.2
classmethod from_bytes【バイト列の整数表現】3.2
メモ
- バイト列と整数の変換
構文
int.to_bytes(length, byteorder, *, signed=False) 3.2
戻り値バイト列
lengthバイト数
byteorderバイトオーダー
"big"最上位のバイト → 最下位のバイト の順
"little"最下位のバイト → 最上位のバイト の順
sys.byteorderシステムのバイトオーダー
signed (キーワード引数)2 の補数の使用有無 (省略:False)
例外OverflowError 例外
length のバイト数では不足
負の整数で signed が False
※ * は、キーワード引数との区切り (def【関数定義】 参照)
classmethod int.from_bytes(bytes, byteorder, *, signed=False) 3.2
戻り値整数値
bytesバイト列 (バイト列風オブジェクト・バイト列を生成するイテラブル)
バイト列風オブジェクトbytes-like object 参照
byteorderバイトオーダー
"big"最上位のバイト → 最下位のバイト の順
"little"最下位のバイト → 最上位のバイト の順
sys.byteorderシステムのバイトオーダー
signed (キーワード引数)2 の補数の使用有無 (省略:False)
※ * は、キーワード引数との区切り (def【関数定義】 参照)
例
n = 0x1111_0000
print(n.to_bytes(4, 'big'))
# 出力:b'\x11\x11\x00\x00'
print(n.to_bytes(4, 'little'))
# 出力:b'\x00\x00\x11\x11'
b = b'\x11\x11\x00\x00'
n = int.from_bytes(b, 'big')
print(hex(n))
# 出力:0x11110000
n = int.from_bytes(b, 'little')
print(hex(n))
# 出力:0x1111
as_integer_ratio【分数表現】3.8
メモ
- float【浮動小数点数型】に合わせる為に追加 3.8
- 分母は1
構文
int.as_integer_ratio() 3.8
戻り値(分子, 分母)の tuple【タプル】 (分母:1)
例
lst = [1, 10, 100, 1000, 1234567890_1234567890]
for n in lst:
print(n.as_integer_ratio())
# 出力:(1, 1)
# 出力:(10, 1)
# 出力:(100, 1)
# 出力:(1000, 1)
# 出力:(12345678901234567890, 1)