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

前言

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

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

一、人物简介

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

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

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

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

二、计算2的整数次幂

  • 代码示例
#include <stdio.h>
int main() 
{
    int x = 1;
    printf("请输入2的次方数:");
    scanf("%d",&x);
    int y = 1 << x; 
    printf("\n2的%d次方 = %d\n",x,y);
    return 0;
}
  • 运行结果

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

三、将一个字节序列合并为一个整数

  • 例如,将4个字节组成的字节序列b合并为一个整数
  • 代码示例
#include <stdio.h>

int main() 
{
    unsigned char b[4] = {0x12, 0x34, 0x56, 0x78};
    unsigned int x = ((unsigned int)b[0] << 24) | ((unsigned int)b[1] << 16) |((unsigned int)b[2] << 8) | ((unsigned int)b[3]);
    printf("合并后的整数 = 0x%08x\n", x);
    return 0;
}
  • 运行结果

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

下面介绍的两种用法,会用到& | ^的知识

如果有不清楚的,可以查看之前的文章:位运算符的基础用法

四、标记码

1、标记位置1

  • 例如,将0xF8的第2位(从第0位开始数,由低位到高位) 置1
  • 代码示例
#include <stdio.h>
int main() 
{
    int x = 0xF8;
    x |= 1<<2; 
    printf("x = 0x%0x\n",x);
    return 0;
}
  • 运行结果

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

2、标记位置0

  • 例如,将0xF8的第3位(从第0位开始数,由低位到高位) 置0
  • 代码示例
#include <stdio.h>
int main() 
{
    int x = 0xF8;
    x &= (~(1<<3)); 
    printf("x = 0x%0x\n",x);
    return 0;
}
  • 运行结果

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

3、标记位取反

  • 例如,将0xF8的第3位和第2位(从第0位开始数,由低位到高位) 取反
  • 代码示例
#include <stdio.h>
int main() 
{
    int x = 0xF8;
    x ^= (3<<2);  // 3的二进制为0b11,左移2位刚好对应第2和第3位
    printf("x = 0x%0x\n",x);
    return 0;
}
  • 运行结果

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

五、掩码

1、末尾连续N位都置1

  • 例如,将0xF8的低3位都置1
  • 代码示例
#include <stdio.h>
int main() 
{
    int x = 0xF8; // Ob1111 1000 
    x |= ((1<<3)-1);
    printf("x = 0x%0x\n",x); // 0b1111 1111
    return 0;
}
  • 运行结果

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

2、末尾连续N位都置0

  • 例如,将0xFF的低4位都置0
  • 代码示例
#include <stdio.h>
int main() 
{
    int x = 0xFF;	// 0b1111 1111
    x &= ~((1<<4)-1);
    printf("x = 0x%0x\n",x); // 0b1111 0000
    return 0;
}
  • 运行结果

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

3、末尾连续N位取反

  • 例如,将0xFA的低4位都取反
  • 代码示例
#include <stdio.h>
int main() 
{
    int x = 0xFA;	// 0b1111 1010
    x ^= ((1<<4)-1);
    printf("x = 0x%0x\n",x); // 0b1111 0101
    return 0;
}
  • 运行结果

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

小结

通过这篇文章,我们学会了用位运算符<<的4种高级用法

1、计算2的整数次幂

2、将一个字节序列合并为一个整数

3、标记码

4、掩码

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

?欢迎各位 ?点赞 ⭐收藏 ?评论,如有错误请留言指正,非常感谢!

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

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

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

相关文章

  • C/C++中extern “C” 的作用分析

    当C++代码需要与C代码进行链接时,由于C++编译器经过了重载和命名改编等操作,因此函数名、变量名等有时需要进行改变,此时如果C++代码直接链接C代码,则可能会发生链接错误。为了解决这个问题,C++提供了extern “C”语法来解决此类问题。 一、extern “C”语法介绍 extern “C”是C++中用于链接C代码的一种机制。当代码被extern “…

    C 2023年5月23日
    00
  • C语言中栈的两种实现方法详解

    C语言中栈的两种实现方法详解 栈,即先进后出(LIFO)的数据结构。在C语言中,栈是一个重要的概念,可以用于实现各种算法和数据结构。 本文主要介绍C语言中栈的两种实现方法。 方法一:基于数组实现栈 基于数组实现栈是一种简单的方法。我们可以定义一个数组作为栈的存储空间,并且定义栈顶指针(top)来指示栈顶元素的位置。 下面是一个简单的示例代码: #includ…

    C 2023年5月23日
    00
  • oracle 数据库隔离级别学习

    Oracle 数据库隔离级别学习 简介 数据库隔离级别是指在多个并发事务之间的数据隔离程度。Oracle 数据库中提供了四种不同隔离级别(未提交读取、已提交读取、可重复读取、串行化),每种级别各自具有不同的数据隔离程度和并发性能。这篇文章将为您详细介绍这四种隔离级别以及如何选择适合您的数据库场景的级别。 隔离级别 未提交读取 未提交读取是最低级别的隔离级别,…

    C 2023年5月23日
    00
  • C 排序算法

    C 排序算法的使用攻略 1. 确定排序算法 首先需要确定使用哪种排序算法。 C 语言支持多种排序算法,例如:冒泡排序、选择排序、插入排序、归并排序、快速排序等。 对于不同的排序场景,选择不同的排序算法,可以提高排序的效率。 2. 实现排序函数 在 C 语言中,可以自己实现排序函数,也可以使用库函数。 以下是一个简单的冒泡排序函数的实现: void bubbl…

    C 2023年5月10日
    00
  • Flash Actionscript 优化指南

    Flash Actionscript 优化指南 为什么需要优化 在开发复杂的Flash应用程序时,如不进行优化,可能出现以下问题: 程序速度变慢,用户体验变差。 耗费更多的CPU周期和内存,使程序更容易崩溃。 代码杂乱无章,难以维护和扩展。 因此,优化是每个Flash开发人员必须掌握的技能。 优化方法 以下是几种常见的优化方法: 1. 尽量避免使用深度嵌套显…

    C 2023年5月22日
    00
  • 贪吃蛇C语言代码实现(难度可选)

    标题:贪吃蛇C语言代码实现(难度可选)完整攻略 简介 贪吃蛇是一个经典的游戏,代码实现考虑语言及难度,C语言正好符合要求。本攻略将提供完整的贪吃蛇C语言代码实现过程及相关细节。 相关知识 在实现贪吃蛇游戏的过程中,需要我们掌握一些C语言基础知识,例如:指针、数组、函数、结构体等等。 代码分析 其中,结构体用于记录贪吃蛇的各个关键属性,代码如下: typede…

    C 2023年5月23日
    00
  • C语言之选择分支语句详解

    C语言之选择分支语句详解 在C语言中,选择分支语句主要用来根据某些条件来决定程序运行的不同路径,通常有以下三种形式: if语句 switch语句 三目运算符 if语句 if语句的一般形式如下: if (条件表达式) { // 条件满足时执行的代码块 } 例如,下面的代码将根据用户输入的数字来判断其是正数、负数还是零: #include <stdio.h…

    C 2023年5月24日
    00
  • C语言实现二叉树的基本操作

    C语言实现二叉树的基本操作 一、概述 二叉树是一种经典的数据结构,它是由若干个节点构成的树形结构,每个节点最多有两个子节点(左子节点和右子节点)。在C语言中,二叉树的实现可以使用结构体和指针来完成。本文将详细介绍如何实现二叉树的基本操作。 二、数据结构 二叉树的数据结构可以使用以下结构体来定义: typedef struct TreeNode { int d…

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