位运算(笔记)

异或: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++;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值