在变量后加signed,可以在加减,比较大小时,成为有符号数的加减法或比较。
但是对于移位,编译器并不像C语言的编译器一样,有符号数,移位对于负数最高位补1,正数补0。而是都补零。所以对于负数的移位,如下
if(baseline1<0)
baseline1 <= -((-baseline1)>>3);
else
baseline1 <= (baseline1>>3);
如此实现用移位代替的除法,节省了资源。
本文探讨了在编程中如何通过移位操作来替代传统的除法运算,尤其针对有符号数的处理。文章指出,对于有符号数,移位操作在编译器层面不会自动区分正负数进行高位补码,因此需要手动实现。通过具体代码示例,展示了如何判断数的正负并进行正确的移位操作,以达到节省资源的目的。
在变量后加signed,可以在加减,比较大小时,成为有符号数的加减法或比较。
但是对于移位,编译器并不像C语言的编译器一样,有符号数,移位对于负数最高位补1,正数补0。而是都补零。所以对于负数的移位,如下
if(baseline1<0)
baseline1 <= -((-baseline1)>>3);
else
baseline1 <= (baseline1>>3);
如此实现用移位代替的除法,节省了资源。
841