C语言中的位运算



1. C语言位及其运算符
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
        操作符                       作用
────────────────────────────
          &                        位逻辑与
           |                         位逻辑或
          ^                         位逻辑异或
          -                         位逻辑反
          >>                         右移
          <<                         左移
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

※特别注意:逻辑运算符的“!”——逻辑非,不是位运算符!
2. 用途举列
(1)对于以2的指数次方为“*”、“/”或“%”因子的数学运算,转化为移位运算“<<” 、“>>”,通常可以提高算法效率,因为乘除运算指令周期通常比移位运算大。

 1 None.gif #include  " Stdio.h "
 2 None.gif#include  " Conio.h "
 3 None.gif
 4 None.gif int  main( void )
 5 ExpandedBlockStart.gifContractedBlock.gif dot.gif {
 6InBlock.gif    unsigned i,j;
 7InBlock.gif    i = 879 / 16;
 8InBlock.gif    printf("The result of 879 divided by 16 is : %d\n",i);
 9InBlock.gif    i = 879 >> 4;  //等价于879/16
10InBlock.gif    printf("The result of 879 move right 4 digit is : %d\n",i);
11InBlock.gif
12InBlock.gif    j = 562 % 32;
13InBlock.gif    printf("The result of 562 mode 32 is : %d\n",j);
14InBlock.gif    j = 562 - (562 >> 5 << 5); //等价于562%32
15InBlock.gif    printf("The result of 562 mode 32 by move digit is also: %d\n",j);
16InBlock.gif
17InBlock.gif    getch();
18InBlock.gif    return 0;
19ExpandedBlockEnd.gif}

结果如下:

※特别注意:两个整数相除结果为整数,如879/16的结果值为54!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值