C语言高效编程的四大秘技之使用位操作,减少除法和取模的运算
2014-04-24 15:36
513 查看
转自:http://tech.163.com/06/1201/10/318HH45C00091KVA_2.html
第3招:使用位操作,减少除法和取模的运算
在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效率。举例如下:
方法G
方法H
int I,J;
I = 257 >>3;
J = 456 - (456 >> 4 << 4);
在字面上好像H比G麻烦了好多,但是,仔细查看产生的汇编代码就会明白,方法G调用了基本的取模函数和除法函数,既有函数调用,还有很多汇编代码和寄存器参与运算;而方法H则仅仅是几句相关的汇编,代码更简洁,效率更高。当然,由于编译器的不同,可能效率的差距不大,但是,以我目前遇到的MS C ,ARM C 来看,效率的差距还是不小。相关汇编代码就不在这里列举了。
运用这招需要注意的是,因为CPU的不同而产生的问题。比如说,在PC上用这招编写的程序,并在PC上调试通过,在移植到一个16位机平台上的时候,可能会产生代码隐患。所以只有在一定技术进阶的基础下才可以使用这招。
第3招:使用位操作,减少除法和取模的运算
在计算机程序中,数据的位是可以操作的最小数据单位,理论上可以用“位运算”来完成所有的运算和操作。一般的位操作是用来控制硬件的,或者做数据变换使用,但是,灵活的位操作可以有效地提高程序运行的效率。举例如下:
方法G
int I,J; I = 257 /8; J = 456 % 32;
方法H
int I,J;
I = 257 >>3;
J = 456 - (456 >> 4 << 4);
在字面上好像H比G麻烦了好多,但是,仔细查看产生的汇编代码就会明白,方法G调用了基本的取模函数和除法函数,既有函数调用,还有很多汇编代码和寄存器参与运算;而方法H则仅仅是几句相关的汇编,代码更简洁,效率更高。当然,由于编译器的不同,可能效率的差距不大,但是,以我目前遇到的MS C ,ARM C 来看,效率的差距还是不小。相关汇编代码就不在这里列举了。
运用这招需要注意的是,因为CPU的不同而产生的问题。比如说,在PC上用这招编写的程序,并在PC上调试通过,在移植到一个16位机平台上的时候,可能会产生代码隐患。所以只有在一定技术进阶的基础下才可以使用这招。
相关文章推荐
- 使用位操作,减少除法和取模的运算。
- C语言高效编程的四大秘技之以空间换时间
- 实现C语言高效编程的四大秘技
- 实现C语言高效编程的四大秘技
- C语言高效编程的四大秘技之数学方法解决问题
- 实现C语言高效编程的四大秘技
- 实现C语言高效编程的四大秘技
- 实现C语言高效编程的四大秘技
- C语言高效编程的四大绝招
- C语言高效编程的四大绝招
- c语言编程提高除法运算的精度
- 秘籍:C语言高效编程的四大绝招
- C语言高效编程的的四大绝招
- C语言高效编程的的四大绝招
- C语言高效编程的的四大绝招 !!!!
- C语言高效编程的四大绝招
- C语言高效编程的的四大绝招
- C语言高效编程的的四大绝招
- C语言高效编程的的四大绝招
- C语言高效编程的四大绝招