ネットの記事を見てたらなんか出来そうだなーと、ExcelとPythonであれこれ試していたら出来たのでメモ書き(もっと別の方法もあるかもしれない)。8bitでしか検証していませんが、恐らく他のbit数でもいけるはず・・・?
フォトインタラプタを複数横に並べなくて済むので、地味に便利。
import sys
#
# main
#
def main(arg):
list = []
# 初期値
data = 0b00000000
for num in range(256):
# 1bit左シフト
data = data << 1
data = data & 0b11111111
# 0bit目に1をセット
data = data | 0b1
# 過去の値と被らなければそのまま採用
if not data in list:
list.append(data)
print(format(data,'08b') + " " + str(data))
# 被ったら0bit目を0にする
else:
data = data & 0b11111110
if not data in list:
list.append(data)
print(format(data,'08b') + " " + str(data))
# それでも値が被ったら終了
else:
print('値が重複しました ' + str(num))
break
print('end')
if __name__ == '__main__':
main(sys.argv)
コメント