KirIn 落書き帳

素人がプログラミング, FPGA, LSIをお勉強しているメモ書きです。間違いがあればご指導していただけたら幸いです。

verilogのための2進数と2進数の補数変換

verilogを書いていると2進数または2進数の補数の値を知りたいときがあります。
そんな時、毎回ターミナルを離れてブラウザで検索して変換するのはめんどくさいため pythonで変換スクリプトを作成しました。

実行方法は以下のとおりです。

$ python binary.py
dec :           ← ここに正か負の整数入力
width :         ← bit幅を入力

// example
$ python binary.py
dec :-3
width :5 
5'b11101 ← 同時にクリップボードにコピーされる

ソースコードは以下になります。

from Tkinter import Tk #クリップボードにコピーするため

dec = input("dec :")
width = input("width :")

if dec < 0: 
    dec_maxwidth = 2 ** width
    binary = bin(dec_maxwidth + dec) #補数をとる
else:
    binary = bin(int(dec))

a = "{}".format(binary.replace('0b', '')).rjust(int(width), '0')

binout = str(width) + "'b" + a
print(binout)

r = Tk()
r.clipboard_append(binout)