• 位运算实例讲解


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

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

    程序源代码:

    1. #include <stdio.h>
    2. int main()
    3. {
    4. int a,b;
    5. a=077;
    6. b=a&3;
    7. printf("a & b(decimal) 为 %d \n",b);
    8. b&=7;
    9. printf("a & b(decimal) 为 %d \n",b);
    10. return 0;
    11. }

     以上实例输出结果为:

    a & b(decimal) 为 3

    a & b(decimal) 为 3


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

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

    程序源代码:

    1. #include<stdio.h>
    2. int main()
    3. {
    4. int a,b;
    5. a=077;
    6. b=a|3;
    7. printf("b 的值为 %d \n",b);
    8. b|=7;
    9. printf("b 的值为 %d \n",b);
    10. return 0;
    11. }

    以上实例输出结果为:

    b 的值为 63

    b 的值为 63


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

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

    程序源代码:

    1. #include <stdio.h>
    2. int main()
    3. {
    4. int a,b;
    5. a=077;
    6. b=a^3;
    7. printf("b 的值为 %d \n",b);
    8. b^=7;
    9. printf("b 的值为 %d \n",b);
    10. return 0;
    11. }

    以上实例输出结果为:

     b 的值为 60

    b 的值为 59


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

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

    程序源代码:

    1. #include <stdio.h>
    2. int main()
    3. {
    4. int a,b;
    5. a=234;
    6. b=~a;
    7. printf("a 的按位取反值为(十进制) %d \n",b);
    8. a=~a;
    9. printf("a 的按位取反值为(十六进制) %x \n",a);
    10. return 0;
    11. }

    以上实例输出结果为:

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


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

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

    (1)先使 a 右移 4 位。

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

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

    1. #include <stdio.h>
    2. int main()
    3. {
    4. unsigned a,b,c,d;
    5. printf("请输入整数:\n");
    6. scanf("%o",&a);
    7. b=a>>4;
    8. c=~(~0<<4);
    9. d=b&c;
    10. printf("%o\n%o\n",a,d);
    11. return 0;
    12. }

    以上实例输出结果为:

     请输入整数:
    36
    36
    1

  • 相关阅读:
    WebGPU 中的缓冲映射机制
    C/C++ 网络库 boost asio 使用详解
    jetson机器上对lxde桌面设置中文输入法详细过程(图文展示)
    虹科分享 | 谷歌Vertex AI平台使用Redis搭建大语言模型
    情说心理系统平台模式解析
    Unity中Shader的GI的直接光实现
    通信算法之189: 信道检测- MRC
    结合 LDAP 和 RADIUS 认证的无线网络安全方案
    treevalue——Master Nested Data Like Tensor
    思维导图结构化梳理Java进阶方向
  • 原文地址:https://blog.csdn.net/m0_52892985/article/details/125566812