字体
第(4/6)页
关灯
   存书签 书架管理 返回目录
001101        (十进制为 13)可见 9|5=13

    【例 12.2】

    main(){

    int a=9,b=5,c;

    c=a|b;

    printf("a=%d\nb=%d\nc=%d\n",a,b,c);

    }

    12.1.3 按位异或运算

    按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异

    或,当两对应的二进位相异时,结果为 1。参与运算数仍以补码出现,例如 9^5 可写成算式

    如下:

    00001001

    ^00000101

    00001100       (十进制为 12)

    【例 12.3】

    main(){

    int a=9;

    a=a^5;

    printf("a=%d\n",a);

    }

    12.1.4 求反运算

    求反运算符~为单目运算符,具有右结合xìng。其功能是对参与运算的数的各二进位按位

    求反。

    例如~9 的运算为:

    ~(0000000000001001)结果为:1111111111110110

    12.1.5 左移运算

    左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干

    位,由“<<”右边的数指定移动的位数,高位丢弃,低位补 0。

    例如:

    a<<4

    指把 a 的各二进位向左移动 4 位。如 a=00000011(十进制 3),左移 4 位后为 00110000(十进

    制 48)。

    12.1.6 右移运算

    右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干

    位,“>>”右边的数指定移动的位数。

    例如:

    设  a=15,

    a>>2

    表示把 000001111 右移为 00000011(十进制 3)。

    应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时,最高位补

    0,而为负数时,符号位为 1,最高位是补 0 或是补 1 取决于编译系统的规定。Turbo C 和很

    多系统规定为补 1。

    【例 12.4】

    main(){

    unsigned a,b;

    printf("input a number:   ");

    scanf("%d",&a);

    b=a>>5;

    b=b&15;

    printf("a=%d\tb=%d\n",a,b);

    }

    请再看一例!

    【例 12.5】

    main(){

    char a='a',b='b';

    int p,c,d;

    p=a;

    p=(p<<8)|b;

    d=p&0xff;

    c=(p&0xff00)>>8;

    printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);

   
上一页 目录 下一页