verilog 实现比较简单,但运行环境每次都会比较麻烦,python 对bit 的操作没想到更好的方法 用了list 做的逆序
# -*- coding: utf-8 -*-
def bit_inverse(hex_d):
bit_wide=18
print("input hex data = 0x%x"%hex_d)
bit_d=bin(hex_d);
str_bit_d=str(bit_d)
print("input bin data = %s"%str_bit_d)
str_bit_d_l=len(str_bit_d)
print("input bin length = %d"%str_bit_d_l)
add_len=bit_wide-str_bit_d_l+2
print("add_len=%d"%add_len)
bit_list=[] #list
#inv_bit_list=[]
for i in range(0,bit_wide):
if(i<add_len):
print("%d add 1 bit_0"%i)
bit_list.append(str(0))
else:
#print(str(i)+"="+str(str_bit_d[i-add_len+2]))
bit_list.append(str_bit_d[i-add_len+2])
#print("bit_list_"+str(i)+"="+str(bit_list[i]))
print("bit_list_pre="+str(bit_list))
bit_list.reverse();
print("bit_list_rev="+str(bit_list))
#for i in range(0,bit_wide):
# print("inv_"+str(i)+"="+str(bit_list[i]))
inv_bit_d=''.join(bit_list)
print(inv_bit_d)
inv_bit_d='0b'+inv_bit_d
print(inv_bit_d)
inv_hex=hex(int(inv_bit_d,2))
print(inv_hex)
return
def main():
hex_d=0x3a203
bit_inverse(hex_d)
return
if __name__ == '__main__':
main()