异或:1^0=1 1^1=0 0^0=0 0^1=1
&&逻辑与:—1&&—2 要求条件1和条件2同时为真方为真,其他都是假。
&按位与
||逻辑或
|按位或
在程序中
if(a>0 && b<10) eg.a=0,b=5 得到的结果为假
........................................................................................................
int a=0;
int b=10;
int c=0;
if((a>5)&&(c=b)>5){
// 短路与:&&只要第一个条件为假,后面的条件程序不执行
//短路或:||只要第一个条件为真,后面的条件程序不执行
........................................................................................................
}
print(c);......>c=0
........................................................................................................
if((a>5)&(c=b)>5){
//按位与:&每一个条件都会检查,无论第一个条件是否为真都会计算第二个条件,如果最终结果为假,if语句{}内的内容不会被运行
........................................................................................................
}
print(c);......>c=10
右移>>
将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃
125>>3
左移<<
同样的,左移则是将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)
125>>3
int i; pImg=dbTargetImage; for ( i=0;i<IMAGEWIDTH;i++,pImg++ ) (*pImg)=0; (*pImg)=0; pImg1=dbImage; pImg2=pImg1+IMAGEWIDTH; pImg3=pImg2+IMAGEWIDTH; for ( i=2;i<nHeight;i++ ) { pImg++; x1=(*pImg1); pImg1++; x2=(*pImg1); pImg1++; x4=(*pImg2); pImg2++; x5=(*pImg2); pImg2++; x7=(*pImg3); pImg3++; x8=(*pImg3); pImg3++; for ( mi=2;mi<nWidth;mi++,pImg++,pImg1++,pImg2++,pImg3++ ) { x3=(*pImg1); x6=(*pImg2); x9=(*pImg3); m_nWork1=x5<<2; m_nWork1+=x5; m_nWork2=x2+x4+x6+x8; //m_nWork1=x5<<3; m_nWork1+=x5;...左移3继续对比 //m_nWork2=x1+x2+x3+x4+x6+x7+x8+x9; m_nWork1-=m_nWork2; if ( m_nWork1>255 ) m_nWork1=255; else if ( m_nWork1<0 ) m_nWork1=0; (*pImg)=m_nWork1; x1=x2; x2=x3; x4=x5; x5=x6; x7=x8; x8=x9; } (*pImg)=0; pImg++; }