逍遥自在学C语言 | 位运算符&的高级用法

前言

在上一篇文章中,我们介绍了&运算符的基础用法,本篇文章,我们将介绍& 运算符的一些高级用法。

逍遥自在学C语言 | 位运算符&的高级用法

一、人物简介

  • 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。

逍遥自在学C语言 | 位运算符&的高级用法

  • 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

逍遥自在学C语言 | 位运算符&的高级用法

二、位掩码

  • 位掩码是一种用于按位操作的技术

  • 它通过使用一个二进制数(掩码)来屏蔽或保留目标数中的一些特定位

  • 例如,如果要将一个无符号整数的最高位清零,可以使用以下代码:

#include <stdio.h>

int main()
{  
	unsigned int x = 0xABCD1234; //0b10101011110011010001001000110100
	x &= ~(1U << 31);
 
    printf("x = %u\n",x);
	return 0;
}
  • 1U << 31 表示将一个无符号整数的最高位设置为 1
  • ~(1U << 31)取反得到掩码,再和原数进行按位与运算,就可以将最高位清零

逍遥自在学C语言 | 位运算符&的高级用法

三、判断奇偶性

二进制末尾位
奇数 1
偶数 0
  • 一个数的二进制表示中,如果最后一位为 1,则它是奇数,否则它是偶数
  • 因此,可以使用 & 运算符来判断一个数的奇偶性,例如:
#include <stdio.h>
int main()
{
    int x = 7;
    if (x & 1) 
    {
        printf("%d 是奇数\n", x);
    } 
    else 
    {
        printf("%d 是偶数\n", x);
    }
    return 0;
}
  • x & 1 将返回 x 的最后一位与 1 的按位与
  • 如果结果为 1,说明 x 是奇数,否则 x 是偶数。

逍遥自在学C语言 | 位运算符&的高级用法

四、判断是否为 2 的幂次方

  • 如果一个数是 2 的幂次方,那么它的二进制表示中,只有最高位为 1,其他位都为 0
  • 把这个数减去1,那么它的二进制表示中,最高位为 0,其他位都为1
  • x & (x - 1)的结果一定为 0
  • 例如,判断16 是否是 2 的幂次方:
#include <stdio.h>
int main()
{
    unsigned int x = 16;
    if (!(x & (x - 1))) 
    {
        printf("%u 是 2 的幂次方\n", x);
    } 
    else 
    {
        printf("%u 不是 2 的幂次方\n", x);
    }
    return 0;
}

逍遥自在学C语言 | 位运算符&的高级用法

小结

通过这篇文章,我们学会了用位运算符&来做位掩码操作、判断奇偶性、判断一个数是否为2的幂次方。

在下一篇文章中,我们将介绍位运算符|的几个高级用法。

原文链接:https://www.cnblogs.com/Wayne123/p/17303768.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:逍遥自在学C语言 | 位运算符&的高级用法 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • C# Newtonsoft.Json 的使用说明

    C# Newtonsoft.Json是一个常用的Json操作库,使用它可以方便地实现Json格式的数据的序列化与反序列化。下面来详细讲解一下如何使用该库。 1. 安装Newtonsoft.Json 首先需要在项目中安装Newtonsoft.Json库。可以通过Nuget包管理器搜索 “Newtonsoft.Json” 进行安装,也可以从 官方网站 下载安装包…

    C 2023年5月23日
    00
  • word文档中怎么插入公式? word插入公式的两种方法

    当我们需要在 Word 文档中插入公式时,可以通过以下两种方法: 方法一:使用公式编辑器 首先,选择想要插入公式的位置,然后点击 Word 菜单中的 “插入” 标签; 在 “插入” 标签下,选择 “公式” 选项卡; 点击 “公式” 选项卡下的 “新建公式” 按钮,将弹出公式编辑器窗口; 在公式编辑器窗口中,在上下两栏之间输入公式并编辑; 单击 “确定” 按钮…

    C 2023年5月22日
    00
  • python 提取key 为中文的json 串方法

    提取key为中文的JSON串的方法,可以利用Python的json模块和正则表达式实现。具体步骤如下: 步骤一:读取JSON文件 首先,使用Python中的open函数来读取JSON文件,并使用json.load函数将文件内容加载为JSON对象。示例代码如下: import json with open(‘data.json’, ‘r’, encoding=…

    C 2023年5月23日
    00
  • C语言中如何进行位运算操作?

    位运算是C语言中重要且常用的一种运算,用于在二进制位上执行运算操作。C语言中有6种位运算操作符:”&”、”|”、”~”、”^”、”<< “和”>>”。本文将分别对这些运算符进行详细讲解,以及通过两个示例说明如何进行位运算操作。 &(按位与)操作 按位与(&)操作符将两个数的二进制位进行逐位比较,仅当两个数对应二…

    C 2023年4月27日
    00
  • 常用排序算法的C语言版实现示例整理

    最近我整理了一篇关于常用排序算法的C语言版实现示例的攻略,让大家可以更好地掌握这些算法的原理和实现方法。以下是该攻略的详细讲解。 1. 简介 本攻略主要介绍了常用排序算法的C语言版实现示例。常用的排序算法包括:冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序、归并排序、计数排序、桶排序和基数排序等。在C语言中,可以使用数组实现排序算法。 2. 排序算…

    C 2023年5月22日
    00
  • GO语言中通道和sync包的使用教程分享

    GO语言中通道和sync包的使用教程分享 什么是通道 通道(channel)是 Go 语言中一种特有的同步原语,用于在不同 Goroutine 之间交换数据。通道是一种类型的值,可以对它进行初始化、传递给函数、赋值给变量,甚至可以把它放到切片或结构体中。 创建通道 通道通过 make() 函数来创建,语法如下: ch := make(chan int) 这里…

    C 2023年5月23日
    00
  • 怎么在C++二进制文件中注入git信息详解

    下面是在C++二进制文件中注入git信息的完整攻略。 介绍 在C++开发中,我们经常需要借助版本控制工具Git来管理我们的项目代码,并且会在代码的开头注释中增加一些Git信息,如版本号、提交时间等。但是,这些Git信息只存在于代码中,如果我们需要将代码编译成二进制文件,如可执行文件或库文件,那么这些Git信息就无法被保留下来了。本教程将介绍如何在C++二进制…

    C 2023年5月23日
    00
  • C语言中如何进行代码保护?

    在C语言中,代码保护是指采取一系列措施,防止不合法的访问和修改程序,以提高程序的安全性和可靠性。下面是C语言中进行代码保护的一些常用方法: 1.使用共享库 将程序中一些常见的函数封装成共享库,能够有效地避免代码被恶意篡改的问题,同时还可以使程序占用更少的内存空间。在Linux下,使用共享库非常方便,只需要将程序中用到的函数的原型声明在头文件中,然后将共享库链…

    C 2023年4月27日
    00
合作推广
合作推广
分享本页
返回顶部