喜欢用移位代替乘法的注意啦,每次都是死在这
不知道从什么时候喜欢上用移位来代替乘法,移位这样能提高效率嘛!经常移植一个函数后会顺便把用到乘法的地方顺便改为移位,每次做的时候还沾沾自喜!但是,有多少次你的程序因此无法正常运行呢?我恨自己每次都这么不长记性,今天又花了好久来解决一个莫名其妙的问题,等最后柳暗花明后才发现,我这傻帽的问题不是之前都碰到了好几次了吗?为什么还是会犯这种低级错误呢?
基础不牢?不够细心?
有这个两条就注定你的一生会是坎坷的,诶!
移位的时候千万要记得考虑会不会溢出,丢失高位,不要拿到一个char型数据i也来i<<8,这不是找死吗!
谨以此文为警!!!
ming1006 发表于 2013-3-30 11:22 static/image/common/back.gif
但是用移位的话就是当char计算,会出问题
8后边加个L呢? nemon 发表于 2013-3-30 11:10 static/image/common/back.gif
是啊,“256”就说明右边不会以char进行计算了,肯定不一样
但是用移位的话就是当char计算,会出问题 ming1006 发表于 2013-3-29 18:03 static/image/common/back.gif
假设b跟c不一样
是啊,“256”就说明右边不会以char进行计算了,肯定不一样 nemon 发表于 2013-3-29 14:42 static/image/common/back.gif
没明白。char 乘 256 不也是会出问题吗?为什么说是移位的问题捏?
假设u8 a = 100;
u16 b,c;
b = a * 256;
c = (a << 8);b跟c不一样 没明白。char 乘 256 不也是会出问题吗?为什么说是移位的问题捏? zxq6 发表于 2013-3-14 16:12 static/image/common/back.gif
别听他吹,有些编译器可以,有些编译器不行,对于一些特殊的乘法,绝对的移位比乘法快。 ...
不知道在keil下编译51程序可以吗?或者说都在那设置的? zxq6 发表于 2013-3-14 16:12 static/image/common/back.gif
别听他吹,有些编译器可以,有些编译器不行,对于一些特殊的乘法,绝对的移位比乘法快。 ...
是的 有些编译器可以,有些编译器不行你写个乘法编译一下看一下反汇编的代码就知道了 ming1006 发表于 2013-3-14 16:03 static/image/common/back.gif
这个不太懂,可以给普及下吗
别听他吹,有些编译器可以,有些编译器不行,对于一些特殊的乘法,绝对的移位比乘法快。 zxq6 发表于 2013-3-14 14:55 static/image/common/back.gif
有时候移位是方便,而且也是乘法效率没法比的,楼主出了这个问题,只能说明你还没磨练够,如果够了,运行的 ...
是啊,很多时候一不注意就挂了 mcp2013 发表于 2013-3-14 14:13 static/image/common/back.gif
做好编译器的优化
用移位来代替乘法
这个不太懂,可以给普及下吗
页:
[1]
2