位运算实例讲解

1.题目:学习使用按位与 &。

程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1 。

程序源代码:

#include <stdio.h>
int main()
{
    int a,b;
    a=077;
    b=a&3;
    printf("a & b(decimal) 为 %d \n",b);
    b&=7;
    printf("a & b(decimal) 为 %d \n",b);
    return 0;
}

 以上实例输出结果为:

a & b(decimal) 为 3

a & b(decimal) 为 3


2. 题目:学习使用按位或 |。

程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1 。

程序源代码:

#include<stdio.h>
int main()
{
    int a,b;
    a=077;
    b=a|3;
    printf("b 的值为 %d \n",b);
    b|=7;
    printf("b 的值为 %d \n",b);
    return 0;
}

以上实例输出结果为:

b 的值为 63

b 的值为 63


3.题目:学习使用按位异或 ^。

程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0 。

程序源代码:

#include <stdio.h>
int main()
{
    int a,b;
    a=077;
    b=a^3;
    printf("b 的值为 %d \n",b);
    b^=7;
    printf("b 的值为 %d \n",b);
    return 0;
}

以上实例输出结果为:

 b 的值为 60

b 的值为 59


4.题目:学习使用按位取反~。

程序分析:~0=-1; ~1=-2;

程序源代码:

#include <stdio.h>
int main()
{
    int a,b;
    a=234;
    b=~a;
    printf("a 的按位取反值为(十进制) %d \n",b);
    a=~a;
    printf("a 的按位取反值为(十六进制) %x \n",a);
    return 0;
}

以上实例输出结果为:

 请输入整数:
a 的按位取反值为(十进制) -235 
a 的按位取反值为(十六进制) ffffff15


5.题目:取一个整数 a 从右端开始的 4~7 位。

程序分析:可以这样考虑:

(1)先使 a 右移 4 位。

(2)设置一个低 4 位全为 1,其余全为 0 的数,可用~(~0<<4)

(3)将上面二者进行 & 运算。

#include <stdio.h>
int main()
{
    unsigned a,b,c,d;
    printf("请输入整数:\n");
    scanf("%o",&a);
    b=a>>4;
    c=~(~0<<4);
    d=b&c;
    printf("%o\n%o\n",a,d);
    return 0;
}

以上实例输出结果为:

 请输入整数:
36
36
1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值