我是靠谱客的博主 自觉汽车,最近开发中收集的这篇文章主要介绍python只使用位操作符和加号实现乘法、除法操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

def mul_cell(mult1, mult2, mult_acci):
if(mult2 & 0x01):
return [mult1 << 1, mult2 >> 1, mult_acci + mult1]
else:
return [mult1 << 1, mult2 >> 1, mult_acci]
def mult_man(mult1, mult2):
if mult2 > mult1:
mult1, mult2 = mult2, mult1
mult_acci = 0
while mult2 > 0:
mult1,mult2,mult_acci = mul_cell(mult1,mult2,mult_acci)
print(mult_acci)
mult_man(255,12)

根据verilog的流水级乘法器的原理

def divider_cell(divisor, dividend):
num_dividend = int('0b' + dividend, 2)
num_divisor = int('0b' + divisor, 2)
if num_divisor >= num_dividend:
return ['1', str(bin(num_divisor - num_dividend))[2:]]
else:
return ['0', str(bin(num_divisor))[2:]]
def get_binary_width(num):
res = 1
while (num >> 1) > 0:
res += 1;
num = num >> 1
return res
def divider_man(dividend, divisor):
merchant = ''
remainder = ''
dividend_width = get_binary_width(dividend)
divisor_width = get_binary_width(divisor)
return_info = divider_cell(str(bin(dividend))[2:divisor_width+2], str(bin(divisor))[2:])
merchant += return_info[0]
remainder = return_info[1]
for i in range(dividend_width - divisor_width):
return_info = divider_cell(remainder + str(bin(dividend))[2+divisor_width + i], str(bin(divisor))[2:])
merchant += return_info[0]
remainder = return_info[1]
print(int('0b' + merchant, 2))
print(int('0b' + remainder, 2))
divider_man(10,3)

根据verilog的流水线的触发器设计

最后

以上就是自觉汽车为你收集整理的python只使用位操作符和加号实现乘法、除法操作的全部内容,希望文章能够帮你解决python只使用位操作符和加号实现乘法、除法操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部