在opencv 的例子代码中看到一句
CvSize sz = cvSize( img->width & -2, img->height & -2 );
真是很奇怪的语句,随手计算器查了下 -2 = FFFFFFFFFFFFFFFE
算了下应该是将一个数转成小于等于该数的2的倍数;随手写了段代码
for(int i=0;i<10;i++){
printf("%d & -2 = %d\n",i,i & -2);
}
打印结果:
0 & -2 = 0 1 & -2 = 0 2 & -2 = 2 3 & -2 = 2 4 & -2 = 4 5 & -2 = 4 6 & -2 = 6 7 & -2 = 6 8 & -2 = 8 9 & -2 = 8 Press any key to continue
果然如此。这种写法还真是挺有意思。