其他分享
首页 > 其他分享> > 光天化日学C语言(14)- 位运算 & 的应用 | C语言课上学不到的哦~

光天化日学C语言(14)- 位运算 & 的应用 | C语言课上学不到的哦~

作者:互联网

????博客主页:https://blog.csdn.net/WhereIsHeroFrom
????欢迎各位 ????点赞 ⭐收藏 ????评论,如有错误请留言指正,非常感谢!
????本文由 英雄哪里出来 原创,转载请注明出处,首发于 ???? CSDN ????
作者的专栏:
  ????C语言基础专栏《光天化日学C语言》
  ????C语言基础配套试题详解《C语言入门100例》
  ????算法进阶专栏《夜深人静写算法》

文章目录

一、前言

  本文作者是从 2007 年开始学 C语言 的,不久又接触了C++,基本就是 C/C++ 技术栈写了 14 年的样子,不算精通,但也算差强人意。著有《夜深人静写算法》系列,且承诺会持续更新,直到所有算法都学完。主要专攻 高中 OI 、大学 ACM、 职场 LeetCode 的全领域算法。由于文章中采用 C/C++ 的语法,于是就有不少读者朋友反馈语言层面就被劝退了,更何况是算法。
  于是,2021 年 06 月 12 日,《光天化日学C语言》 应运而生。这个系列文章主要服务于高中生、大学生以及职场上想入坑C语言的志同道合之人,希望能给祖国引入更多编程方面的人才,并且让自己的青春不留遗憾!
  这一章的主要内容是位与运算符的应用。

二、人物简介 三、位与运算符
左操作数 右操作数 结果
0 0 0
0 1 0
1 0 0
1 1 1
#include <stdio.h>
int main() {
    int a = 0b1010;           // (1)
    int b = 0b0110;           // (2)
    printf("%d\n", (a & b) ); // (3)
    return 0;
}
2
四、位与运算符的应用

1、奇偶性判定

#include <stdio.h>
int main() {
    if(5 % 2 == 1) {
        printf("5是奇数\n");
    }
    if(6 % 2 == 0) {
        printf("6是偶数\n");
    }
    return 0;
} 
#include <stdio.h>
int main() {
    if(5 & 1) {
        printf("5是奇数\n");
    }
    if( (6 & 1) == 0 ) {
        printf("6是偶数\n");
    }
    return 0;
} 
- 二进制末尾位
奇数 1
偶数 0
	if( expr ) { body }

2、取末五位

【例题1】给定一个数,求它的二进制表示的末五位,以十进制输出即可。

#include <stdio.h>
int main() {
    int x;
    scanf("%d", &x);
    printf("%d\n", (x & 0b11111) );
    return 0;
} 

【例题2】如果是想得到末七位、末九位、末十四位、末 K 位,应该如何实现呢?

3、消除末尾五位

【例题3】给定一个 32 位整数,要求消除它的末五位。

#include <stdio.h>
int main() {
    int x;
    scanf("%d", &x);
    printf("%d\n", (x & 0xffffffe0) );
    return 0;
} 

4、消除末尾连续1

【例题4】给出一个整数,现在要求将这个整数转换成二进制以后,将末尾连续的1都变成0,输出改变后的数(以十进制输出即可)。

5、2的幂判定

【例题5】请用一句话,判断一个正数是不是2的幂。

	(x & (x-1)) == 0

通过这一章,我们学会了:
  1)用位运算 & 来做奇偶性判定;
  2)用位运算 & 获取一个数的末五位,末七位,末K位;
  3)用位运算 & 消除某些二进制位;
  4)用位运算 & 消除末尾连续 1;


课后习题


????博客主页:https://blog.csdn.net/WhereIsHeroFrom
????欢迎各位 ????点赞 ⭐收藏 ????评论,如有错误请留言指正,非常感谢!
????本文由 英雄哪里出来 原创,转载请注明出处,首发于 ???? CSDN ????
作者的专栏:
  ????C语言基础专栏《光天化日学C语言》
  ????C语言基础配套试题详解《C语言入门100例》
  ????算法进阶专栏《夜深人静写算法》

标签:11,光天化日,00,14,...,二进制,C语言,五位
来源: https://blog.51cto.com/u_15239535/3009729