随笔分类 - 编程经验
一些编程的经验。
摘要:以下讨论的环境基于Visual Studio 2010。在使用OpenCV的过程中,我们不但要指定头文件和库的目录,而且要指定库的名称,比如为了使用常用的基本功能,我们需要指定附加libopencv_highgui249.dll。相比之下,在使用C++的boost库的过程中,我们只需要指定头文件的目...
阅读全文
摘要:如果我们要计算一个数X的N次幂,那么很直接地,我们可以写出以下代码: 1 int 2 Power(int base, int pow) 3 { 4 int result; 5 result = 1; 6 7 while (pow > 0) { 8 ...
阅读全文
摘要:如果我们要计算一个二进制数中1的个数,很显然会想到运用位运算的知识来解决。前面有篇博文,讲如何判断一个数是否是2的幂,其实就是判断一个二进制数中是否仅含有一个1,解法是x & x - 1。在理解上式的前提下,我们可以发现,如果二进制数x中包含不止一个1,那么x&x-1的结果就使得原先的x失去的最末尾...
阅读全文
摘要:一般来说,我们可以用异或运算来交换两个整数,这样可以避免在交换的过程中用到临时变量。(其实用到一个临时变量也不影响程序性能,所以此处无非是编程技巧的考察了。)代码可以这样写:1 void2 Swap(int *a, int *b)3 {4 5 *a ^= *b;6 *b ^=...
阅读全文
摘要:1. 检查一个整数x是否是2的倍数:x & (x-1)提示:如果x是2的倍数,那么x的二进制数中只有一位是1。2. 最大的有符号整数(32位)~(1 b,如果为1,则a>(sizeof(int)*8-1)假设上式的值为s,另外假设右移操作为逻辑右移。则s的值为0或者1。所以我们可以得到a和b中较大的...
阅读全文