次のPythonプログラムを実行したときに出力される結果として、最も適切なものはどれか。
x = 3
bit = 1 << x
mask = 1 << 7
for i in range(8) :
if bit & mask == 0 :
print(0, end = '')
else :
print(1, end = '')
mask = mask >> 1
print()
@ 00001000
A 00010000
B 10000000
C 00010001
D 01010101
@
x = 3 ・・・x に 3をセット。
bit = 1 << x ・・・1を3ビット左にシフト。bit: 0000 1000
mask = 1 << 7 ・・・ 1を7ビット左にシフト。mask: 1000 0000
for i in range(8) : ・・・i を 0から7まで、8回ループ
ループ: 1回目
bit & mask 0000 1000と1000 0000 の AND演算により 0
print(0, end = '') ・・0を出力(end = ''により出力後何も追加しない)
mask = mask >> 1 ・・・1ビット右にシフト。mask: 0100 0000
ループ: 2回目
bit & mask 0000 1000と0100 0000 の AND演算により 0
print(0, end = '') ・・0を出力
mask = mask >> 1 ・・・1ビット右にシフト。mask: 0010 0000
ループ: 3回目
bit & mask 0000 1000と0010 0000 の AND演算により 0
print(0, end = '') ・・0を出力
mask = mask >> 1 ・・・1ビット右にシフト。mask: 0001 0000
ループ: 4回目
bit & mask 0000 1000と0001 0000 の AND演算により 0
print(0, end = '') ・・0を出力
mask = mask >> 1 ・・・1ビット右にシフト。mask: 0000 1000
ループ: 5回目
bit & mask 0000 1000と0000 1000 の AND演算により 1
print(1, end = '') ・・1を出力
mask = mask >> 1 ・・・1ビット右にシフト。mask: 0000 0100
ループ: 6回目
bit & mask 0000 1000と0000 0100 の AND演算により 0
print(0, end = '') ・・0を出力(end = ''により出力後何も追加しない)
mask = mask >> 1 ・・・1ビット右にシフト。mask: 0000 0010
ループ: 7回目
bit & mask 0000 1000と0000 0010 の AND演算により 0
print(0, end = '') ・・0を出力
mask = mask >> 1 ・・・1ビット右にシフト。mask: 0000 0001
ループ: 8回目
bit & mask 0000 1000と0000 0001 の AND演算により 0
print(0, end = '') ・・0を出力
mask = mask >> 1 ・・・1ビット右にシフト。mask: 0000 0000
print() ・・・改行出力
よって、00001000 が出力される。
V−5 | 目次 | V−7 |