STM32的右移
小弟最近在用STM32F030C6T6芯片完成电机的SVPWM控制。现在发现算法中,运行速度很慢。打算将所有的除法运算改成移位运算。一般的,无符号数的右移几位和除以2的几次幂是等效的。但是,在STM32里面,有符号数的右移也和除法运算等效吗?楼上说错了,无论有符号数还是无符号数,移位的结果都是一样的,这也是为什么计算机采用补码的原因。
有符号数的右移最高位补的是符号位,无符号数的右移补的是0,最后的结果都是除以相应的数。 有符号数右移和除法运算肯定不等效,你可以先用位运算把符号位保存,再去掉符号位进行位运算 板凳正解 本帖最后由 pythonworld 于 2017-8-20 06:37 编辑
确实如二楼所说,以3和-3为mbed里显示的结果。这个之前没注意,学习了!!!
:lol:lol:lol感谢楼上们的大哥们的回答,小弟在STM32F030芯片中,将每要移位的数都加了括号,如(Period>>15),发现有符号数和无符号数都成功实现右移 2楼正解。楼主的帖子让我注意到平时不注意的细节。
页:
[1]