首页 > 其他分享 >【C语言】简单位运算

【C语言】简单位运算

时间:2024-08-12 21:27:16浏览次数:14  
标签:运算 交换 C语言 获取 位至 简单 清零 幂次 size

  1. 判断奇偶:
  • 奇:(x & 1) == 1⟺(x & 1) != 0

  • 偶:(x & 1) == 0⟺(x & 1) != 1

  1. 乘(或除)以 2 的幂次:
  • x >> n⟺x / 2^n

  • x << n⟺x * 2^n

  1. 去除最后一位 1:x & (x - 1)

  2. 得到最后一位 1:x & -x

  3. 判断 2 的幂次:x & (x - 1) == 0

  4. 交换两个数:a ^= b; b ^= a; a ^= b;

  5. 交换符号:~x + 1⟺-x

  6. 取绝对值:(x ^ x >> size(x) - 1) - (x >> size(x) - 1)⟺x < 0 ? -x : x

  7. 构造 n 个 1:(1 << n) - 1

  8. 将最左边的 n 位清零:x & (~0 << n)

  9. 获取 x 的第 n 位值(0 或 1):(x >> n) & 1

  10. 获取 x 的第 n 位的幂值:x & (1 << n)

  11. 仅将第 n 位置为 1:x | (1 << n)

  12. 仅将第 n 位置为 0:x & (~(1 << n))

  13. 将 x 最高位至第 n 位(含)清零:x & ((1 << n) - 1)

  14. 将第 n 位至第 0 位(含)清零:x & (~((1 << (n + 1)) - 1))

  15. 取反第 n 位:x ^ (1 << n)

  16. 异或满足交换律、结合律:a ^ b ^ a = b ^ (a ^ a) = b ^ 0 = b

标签:运算,交换,C语言,获取,位至,简单,清零,幂次,size
From: https://blog.csdn.net/liuwe1ye/article/details/141142389

相关文章

  • C语言学习心得-二维数组
    (一)二维数组的定义和初始化定义二维数组arr[3][5]:intarr[3][5]={{1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7}};仔细看这个数组arr[0] 是第一个一维数组,包含元素 arr[0][0],arr[0][1],arr[0][2],arr[0][3],arr[0][4]arr[1] 是第二个一维数组,包含元素 ......
  • C语言问答进阶--4、基本运算符
    赋值运算符A:下面将介绍赋值操作符。它的符号就是 = .A:赋值操作符,就是把一个值赋值给左边的变量。正如以前说的形如a=1之类的表达就是赋值运算符的具体应用。也许有的人在编写代码的时候写过这种代码:#include "iostream.h"int main(){    int x;    1=x;......
  • C语言——文件操作
     数据持久化的方法:1.把数据存放到磁盘文件(使用文件可以将数据直接存放在电脑的硬盘上,做到数据的持久化)2.存放到数据库 什么是文件呢?磁盘上的文件就是文件。在程序设计中,一般谈及的文件有两种,从文件功能的角度来分类,有:1.程序文件:如 源程序文件(.h)   目标文件(wi......
  • 在K8S中,简单陈述⼀下K8S架构?
    K8S(Kubernetes)是一个开源的容器编排和管理平台,它提供了容器部署、扩展、管理以及服务发现等功能。K8S的架构可以大致分为控制平面(ControlPlane)和工作节点(WorkerNodes)两部分。以下是对K8S架构的详细陈述:一、控制平面(ControlPlane)控制平面是K8S集群的“大脑”,负责集群的调度、......
  • C++类和对象(中):构造函数、析构函数、拷贝构造、赋值运算符重载
    文章目录C++类和对象4、类的默认成员函数5、构造函数5.1构造函数的特点5.2实例分析6、析构函数6.1析构函数的特点6.2实例分析7、拷贝构造函数7.1拷贝构造函数的特点7.2实例分析7.3浅拷贝和深拷贝8、赋值运算符重载8.1运算符重载8.1.1运算符重载的特点8.1.2实例分析8.......
  • 6-61 顺序表基本运算算法的实现
    线性表实验一实现顺序表各种基本运算的算法目的:领会顺序表存储结构和掌握顺序表中各种基本运算算法设计。内容:编写程序,实现顺序表的各种基本运算算法(假设顺序表的元素类型ElemType为char),并在此基础上设计一个主程序,完成如下功能:(1)初始化顺序表L。(2)依次插入a、b......
  • C语言典型例题36
    《C程序设计教程(第四版)——谭浩强》例题3.4输入一个字符,判别它是否为大写字母,如果是,将它转换为小写字母:如果不是,不转换。然后输出最后要输出的字符。代码://《C程序设计教程(第四版)——谭浩强》//例题3.4输入一个字符,判别它是否为大写字母,如果是,将它转换为小写字母:如果不......
  • 为何iPhone反复重启无法开机?简单步骤快速修复!
    引言苹果手机因其稳定性和流畅性而广受欢迎,但有时也可能遇到令人烦恼的问题,比如设备陷入重启循环,无法正常启动。这种问题不仅影响使用体验,还可能导致重要数据的丢失。本文将探讨苹果手机重启循环的可能原因,并提供一些有效的解决办法,包括常用的修复方法和牛学长苹果手机修复工......
  • Redis 实现简单排行榜功能 | 实战案例
    一、业务场景口算小程序,用户完成口算并获得满分,根据耗时长短进行rank排名,耗时越短,排名越高。主要有以下功能:1.用户数据Mysql与Redis同步:使用一个redishash用来保存用户基本信息,field为userId,value为用户基础数据(本案例为昵称);用户修改昵称时,同步更新hash中对应userId的nickn......
  • 简简单单,扫雷小游戏(极简版)
    目录前言一、扫雷要求二、准备工作1.建立文件2.游戏思路三、扫雷游戏代码步骤1:建立主函数步骤2:创建数组并初始化步骤3:打印数组步骤4:布置雷步骤5:排查雷步骤6:补全头文件四、完整代码 后言:前言用VS2022写的扫雷小游戏,超详细,一步一步帮你理透.一、......