あくまで備忘録なんで雑に記録します
①まずビット(2進数)変換
10進数→2進数
#10→2:プレフィックスあり
print(bin(21), bin(8))
#oやxもあり:プレフィックスなし
print(format(21, 'b'))
2進数→10進数
#2→10
print(int('10101', 2))
論理積と論理和と排他的論理和(& | ^)
#21(10101)と#4(100)と#8(1000)
print(21 & 4)
print(21 & 8)
print(21 | 4)
print(21 | 8)
print(21 ^ 4)
print(21 ^ 8)
#4
#0
#21
#29
#17
#29
②ビットステータス
ゲームとかのステータスに使えるみたいです
#101を属性(家あり・バイクなし・車あり、として)
me = 21
house = 0
bike = 1
car = 2
status = None#status初期化
thing = None#thing初期化
#対象をどれにしようか?
x = int(input('0~2で入力して:'))
if x == 0:
thing = '家'
elif x == 1:
thing = 'バイク'
elif x == 2:
thing = '自転車'
#meの10101の具体的な要素を「1の位」までビットシフトして、「1」と&(論理積)する
#それがTrueなら、'持っている'
if me >> x & 1:
status = '持っている'
else:
status = '持っていない'
print(thing, 'は', status)
#input0:家 は 持っている
#input1:バイク は 持っていない
#input2:自転車 は 持っている
コメント