本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

令和6年度 技術士第一次試験問題【専門科目】

V−6

次の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 ・・・x3をセット。
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 10001000 0000 の AND演算により 0
 print(0, end = '') ・・0を出力(end = ''により出力後何も追加しない)
 mask = mask >> 1 ・・・1ビット右にシフト。mask: 0100 0000
 ループ: 2回目
 bit & mask 0000 10000100 0000 の AND演算により 0
 print(0, end = '') ・・0を出力
 mask = mask >> 1 ・・・1ビット右にシフト。mask: 0010 0000
 ループ: 3回目
 bit & mask 0000 10000010 0000 の AND演算により 0
 print(0, end = '') ・・0を出力
 mask = mask >> 1 ・・・1ビット右にシフト。mask: 0001 0000
 ループ: 4回目
 bit & mask 0000 10000001 0000 の AND演算により 0
 print(0, end = '') ・・0を出力
 mask = mask >> 1 ・・・1ビット右にシフト。mask: 0000 1000
 ループ: 5回目
 bit & mask 0000 10000000 1000 の AND演算により 1
 print(1, end = '') ・・1を出力
 mask = mask >> 1 ・・・1ビット右にシフト。mask: 0000 0100
 ループ: 6回目
 bit & mask 0000 10000000 0100 の AND演算により 0
 print(0, end = '') ・・0を出力(end = ''により出力後何も追加しない)
 mask = mask >> 1 ・・・1ビット右にシフト。mask: 0000 0010
 ループ: 7回目
 bit & mask 0000 10000000 0010 の AND演算により 0
 print(0, end = '') ・・0を出力
 mask = mask >> 1 ・・・1ビット右にシフト。mask: 0000 0001
 ループ: 8回目
 bit & mask 0000 10000000 0001 の AND演算により 0
 print(0, end = '') ・・0を出力
 mask = mask >> 1 ・・・1ビット右にシフト。mask: 0000 0000
print() ・・・改行出力

よって、00001000 が出力される。

V−5 目次 V−7