关于位操作符的实际应用<C语言>

前言

        位操作符在C语言初学阶段相对其他操作符来说,是一种难度比较大的操作符,且运用较少的一类操作符,但是位操作符并不是“一无是处”,合理运用的位操作符,在某些场景下可以优化算法,提高代码的执行效率,存在即合理。

下面给出位操作符的实际运用实例:

^操作符

1.不能创建临时变量(第三个变量),实现两个整数的交换。

        ^的操作符的特点:

        ①0^x=x    ②x^x=0

//不允许创建临时变量,交换两个整数的内容
#include<stdio.h>
int main() {int a = 2;int b = 3;printf("打印前%d %d\n", a, b);a = a ^ b;b = a ^ b;a = a ^ b;printf("打印后%d %d", a, b);return 0;
}

运行结果:

 &、>>操作符

2.求一个整数存储在内存中的二进制1的个数。

        &操作符特点,n&1,就能得到最后一个二进制位是否为1.

//2.求一个整数存储在内存中的二进制1的个数。
#include<stdio.h>
int main() {int n, i, count=0;scanf("%d", &n);for (i = 0; i < 32; i++) {if ((n >> i) & 1 == 1)count++;}printf("%d",count);return 0;
}

多组输入运行结果:

 |、~、<<操作符

 3.一个数的第n位二进制位置0,或置1。

        基本思想:置1,a|=a<<(n-1),

                          置0,a&=~(a<<(n-1))

#include<stdio.h>
int main() {int a, n, j;scanf("%d %d", &a, &n);//假定输入13 5//13的二进制序列:00000000000000000000000000001101a |= (1 << (n - 1));//将第5位置为1后:00000000000000000000000000011101printf("%d\n", a);a &= ~(1 << (n - 1));//将第5位再置为0:00000000000000000000000000001101printf("%d\n", a);return 0;
}

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/6686.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue框架知识点表格总结

今年的就业形势是真的严峻&#xff0c;后端java的薪资直线下降&#xff0c;不仅薪资大幅下降&#xff0c;而且要求也提高了不少&#xff0c;很多后端java开发岗位&#xff0c;都要求会前端Vue框架以及一些其他前端框架。所以以后前后端都得熟练开发。以后前后端分离&#xff0c…

PyQt5:Qt Designer使用重载的自定义类提升控件

1&#xff0c;以QPushButton举例 2&#xff0c;右击需要提升的控件&#xff0c;选择【提升为...】 3&#xff0c;添加自定义类&#xff0c;不用管 .h 的后缀&#xff0c;不影响使用。 4&#xff0c;完成 5&#xff0c;说明&#xff1a;自定义类的&#xff1a;__init__()方法…

基于STC12C5A60S2系列1T 8051单片机的IIC通信的0.96寸4针OLED12864显示16行点x16列点字模的功能

基于STC12C5A60S2系列1T 8051单片机的IIC通信的0.96寸4针OLED12864显示16行点x16列点字模的功能 STC12C5A60S2系列1T 8051单片机管脚图STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式及配置STC12C5A60S2系列1T 8051单片机I/O口各种不同工作模式介绍液晶显示器OLED12864简…

抖音直播间小风车怎么挂?直播间小风车跳转微信怎么开通!

抖音直播已经成为了一个非常受欢迎的直播平台&#xff0c;而在直播间引流也是用户非常关注的一个话题。而针对这个问题&#xff0c;抖音也提供了一种非常好用的小工具——小风车&#xff0c;可以帮助用户在直播间进行引流。那么&#xff0c;抖音直播间小风车怎么挂&#xff1f;…

记录几种排序算法

十种常见排序算法可以分类两大类别&#xff1a;比较类排序和非比较类排序。 常见的快速排序、归并排序、堆排序以及冒泡排序等都属于比较类排序算法。比较类排序是通过比较来决定元素间的相对次序&#xff0c;其时间复杂度不能突破 O(nlogn)。在冒泡排序之类的排序中&…

扩展学习|本体研究进展

文献来源&#xff1a; 王向前,张宝隆,李慧宗.本体研究综述[J].情报杂志,2016,35(06):163-170. 一、本体的定义 本体概念被引入人工智能、知识工程等领域后被赋予了新的含义。然而不同的专家学者对本体的理解不同,所给出的定义也有所差异。 人工智能领域的学者Neches(1991)等人对…

Java ~ Lock【目录】

一 Lock&#xff08;锁&#xff09; Lock&#xff08;锁&#xff09; 《Java ~ Lock【源码】》《Java ~ Lock【总结】》 未完待续…

一些水到渠成的困惑

一、纹波和噪声 什么是纹波&#xff1f;什么是噪声&#xff1f; 两者是怎么产生的&#xff1f; 有什么区别与联系&#xff1f; 在电路中怎么规避&#xff1f;什么样的电路设计&#xff1f; 1.1电源纹波到底是什么&#xff1f; 二、EMC、EMI、ESR 三、二极管、电容不一样的…

Docker Compose 部署若依前后端分离版

准备一台服务器 本次使用虚拟机&#xff0c;虚拟机系统 Ubuntu20.04&#xff0c;内存 4G&#xff0c;4核。 确保虚拟机能连接互联网。 Ubuntu20.04 安装 Docker 添加 Docker 的官方 GPG key&#xff1a; sudo apt-get update sudo apt-get install ca-certificates curl su…

Spring Boot应用部署 - Tomcat容器替换为Jetty容器

Jetty和Tomcat容器对比 Tomcat和Jetty都是一种Servlet引擎&#xff0c;他们都支持标准的servlet规范和JavaEE的规范。 Jetty更轻量级。这是相对Tomcat而言的。 Jetty更灵活。 Jetty更满足公有云的分布式环境的需求&#xff0c;而Tomcat更符合企业级环境。 Tomcat容器替换为…

初始面相对象

初始面向对象 类和对象的关系 类&#xff1a;对对象向上抽取出像的部分、公共的部分以此形成类&#xff0c;类就相当于一个模版。 对象&#xff1a;在某个模版下的具体的产物可以理解为对象&#xff0c;对象就是一个一个具体的实例&#xff0c;就相当于这个模版下具体的产品&…

RabbitMQ之生产批量发送

为什么要用生产批量发送&#xff1f; 批量发送消息&#xff0c;可以提高MQ发送性能。但是 RabbitMQ 并没有提供了批量发送消息的 API 接口,使用 spring-amqp 的 BatchingRabbitTemplate 实现批量能力。 SimpleBatchingStrategy 发送策略满足以下规则会进行发送&#xff1a; ba…

学习【Java反射】这一篇就够了

反射 1. 什么是反射2. 反射的原理3. 使用案例4. 应用场景 1. 什么是反射 Java反射是指在运行时动态地获取类的信息&#xff0c;并可以通过该信息来操作类或对象。 通过反射&#xff0c;我们可以在运行时获取类的字段、方法、构造函数等信息&#xff0c;并能够动态地创建对象、…

JAVA基础JSP之JavaBean模式

JavaBean模式 1 JavaBean简介及设计原则 【JavaBean简介】符合某种特定的规范的Java类&#xff0c;使用Javabean的好处是解决代码重复编写&#xff0c;减少代码冗余&#xff0c;功能区分明确&#xff0c;提高了代码的维护性。[S1] 1.for循环 2.jdbc中的dao模式 【Javabean…

微信小程序进阶之路:项目管理与分包加载实战指南

微信小程序进阶之路&#xff1a;项目管理与分包加载实战指南 在微信小程序的开发海洋中&#xff0c;随着项目的日益复杂&#xff0c;如何高效管理项目结构和优化加载性能成为每位开发者必修课。本文专为“小白”开发者设计&#xff0c;将深入浅出地讲解项目管理的基本概念、分…

梅大(龙)高速周边地形

最近广东高速的事故很受关注&#xff0c;我下载了这个高速的地形数据。查看了一下高速周围的地形情况。确实地形很险要&#xff0c;开车还是不要太快&#xff01;尤其南方的路基不稳&#xff01;这样险要的地形很危险&#xff01; 高速周围的地形情况 梅大&#xff08;龙&…

eNSP-动态路由(ospf协议)

一、拓扑结构搭建 二、主机配置 pc1 pc2 三、路由器配置 1.AR2配置 <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进入接口 [Huawei-GigabitEthernet0/0/0]ip address 192.168.0.2 24 #设置ip地址 [Huawei-GigabitEthernet0/0/0]q #返回上一级 [Huawei]int g0/0/1 …

关于 Vue.js 双向数据绑定基本实现认知

写在前面 很早的一篇博客&#xff0c;整理了部分&#xff0c;蹭假期整理完博文内容涉及:双向数据绑定 实现方式简单介绍基于发布订阅、数据劫持的双向数据绑定两种不同实现(ES5/ES6) Demo&#xff0c;以及代码简单分析Object.defineProperty && Proxy API 介绍以及特性…

rknn adb shell error: closed

博主的答案&#xff1a; 【Android测试】adb shell回车后出现 error closed的解决办法-CSDN博客 第1种&#xff1a;重启电脑&#xff0c;之后把手机查到电脑上&#xff0c;启动idea 第2种&#xff1a;手机-设置-应用程序-开发-usb调试打开再关闭一次 第3种&#xff1a;重启手…

Libcity笔记:原子文件

1 介绍 Libcity中的数据以原子文件的形式存在 2 原子文件类别 对于不同的交通预测任务&#xff0c;可能用到不同的原子文件&#xff0c;同一个数据集不一定包含全部六种原子文件 网格数据需要按照先行后列的顺序遍历OD数据需要按照先起点后终点的顺序遍历 2.1 geo 存储地理…