& | ^ << >> 操作符在程序中的应用

C语言操作符全解析:从基础算术到底层位运算与指针操作 在编程语言中,操作符是构成表达式和执行运算的基本元素,它们本质上是编译器转换为机器指令的符号表示。从基础的算术运算到复杂的位操作,操作符的设计直接映射了计算机的底层硬件逻辑,如CPU的算术逻辑单元(ALU)和内存寻址机制。理解操作符的原理不仅能提升代码效率,更是进行系统编程、嵌入式开发和性能优化的基础。在实际工程中,操作符的熟练运用涉及类型转换、短路求值、内存访问等关键技术点,尤其在资源受限或对性能要求极高的场景下,位操作符和指针操作符的价值尤为突出。本文以C语言为例,系统拆解了包括算术、赋值、关系逻辑、位 阅读详情

 & 按位与    都为1时则为1,其余为0

 |  按位或    都为0时为0,其余为1

 ^  按位异或   相同为1,不同为0


利用好这三个  & | ^  <<  >>  操作符,可以节省内存,提高运行效率


举三个例子:

1.利用死循环重复输出两个值,运用硬皮反正面的道理

#include <stdio.h>

void main()
{
 int a=1; 
while(1)
 {
     if((a&1)!=0)
     cout<<"偶数"<<endl;
     else
     cout<<"奇数"<<endl;

     a++;

}



结果:


2.不使用中间变量交换两个数的值

  三种方法:

  1.加法:

    x=x+y;

   y=x-y;

   x=x-y;

  2.利用乘法:

     x =x*y;

     y=x/y;

     x=x/y;

  3.利用异或^

     x=x ^ y;

     y=y ^ x;

    x=x ^ y;

  


3. <<  与 >> 和乘除法的关系

    一个数a,a<<1  相当于乘以2;向左移动几位就相当于乘以了2的几次方;

   a>>1;这个相当于除以2;向右移动几位就相当于除以了2的几次方;

 

   所以在写程序的时候不要这样写了:

   if (a/2)

  这样写比较高效:

   if(a>>1)








GEE:基于自定义的年度时序数据集进行LandTrendr变化检测 本文介绍了使用年度时序数据进行LandTrendr变化检测的方法,包括核心函数调用、参数设置和结果可视化。通过筛选参数(年份、变化幅度和持续时间)对结果进行过滤,输出变化年份、变化幅度和持续时间。代码提供了完整的处理流程,包括数据输入、LandTrendr算法运行、结果筛选与可视化,并支持结果导出。适用于基于Google Earth Engine平台的地表变化检测分析。 阅读详情

相关推荐

Hypermesh联合ABAQUS—Sets的建立和编辑

打开part copy对话框在对话框的最上面位置可以输入copy后的名称,然后将最下面的Separate disconnected regions into parts(将不连续的区域分割成parts)选项的前面方框勾选上。打开abaqus软件界面,File→import→model,将file filter选为inp格式,找到要导入的有限元文件,单击OK导入文件。HyperWorks新建Set时,会在Model Browser显示,打开Create Set对话框显示详细信息。快捷键,高亮set的内容。

动力资料屋的博客 1291

C语言&(按位与)、|(按位或)、^(按位异或)运算操作符讲解

手把手带你拿捏初学者学习最初较为困难的3个运算操作符(&、|、^),一篇博客带你搞定

weixin_53811859的博客 1万+

WOFOST模型参数调优实战:从‘跑不通’到‘预测准’的避坑指南

本文详细介绍了WOFOST模型参数调优的实战技巧,帮助用户从模型报错诊断到参数敏感性分析,再到土壤-作物参数联调策略,逐步解决‘跑不通’到‘预测准’的问题。通过Python和PCSE工具,提供参数扰动测试模板和关键参数优先级矩阵,助力作物模型的高效校准与预测。

weixin_32597009的博客 622

异或详解

异或门符号'^',在编程中的使用,有的时候能够让你的程序更加精炼简捷, 尤其在C++的acm程序应用中,可以避免许多麻烦!!!它的几个简单作用 讲解如下: 它的简单规则是相同为0,不同为1,例如 int a=3=011(2进制,在计算机中的存储形式); int b=6=110(2进制,在计算机中的存储形式); int c=a^b=101=5; 切忌,在异或门的计算中都是应用的2进制!

不会思考的机器 1452

【编号326】全国地灾数据全国25万多个地质灾害点空间分布数据

全国地质灾害点分布数据涵盖25万多个各类灾害点信息,为灾害防治提供重要依据。通过分析灾害分布规律,可识别高风险区,指导监测预警、应急避险和基础设施建设。多地成功案例(如湖北兴山崩塌避险、重庆长寿滑坡预警、湖南&quot;挪床行动&quot;)证明,提前预警和科学防治能有效避免人员伤亡。云南省2024年通过预警体系成功避让31起灾害,保护1342人生命安全。这些实践表明,地质灾害防治需结合科技手段与群防体系,实现早预警、早处置。

千奇百怪无奇不有 1472

手把手教你搞定JBI投稿:从Statement of Significance到Declaration Statement的保姆级避坑指南

本文提供了一份详细的JBI投稿指南,重点解析Statement of Significance和Declaration of Interests的撰写技巧,帮助研究者避开常见格式陷阱。通过实战案例和检查清单,确保投稿符合JBI的学术严谨性和临床转化价值要求,提升稿件通过率。

weixin_29278805的博客 622

【C语言初阶】操作符之 位运算符详解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)

操作符之 位运算符详解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)

枫叶先生的博客 5万+

SDM量化噪声等效到PLL输出的传递函数推导

在历年文章或书本中少见SDM量化噪声等效到PLL输出的传递函数推导。需了解SDM量化噪声的本质,配合欧拉方程简化,并将Z域转化成S域。最终结合断环处等效到PLL输出的传递函数,方可完成。

u010486560的博客 1407

【c语言操作符系列1】^(异或操作符)讲解和多种例题详解

详解了c语言中^的原理、特点。重点讲述了关于^操作符的多道经典例题

m0_74044018的博客 2万+

使用GDScript(godot)生成仿杀戮尖塔地图

使用GDScript(godot)生成仿杀戮尖塔地图 extends Node2D export (PackedScene) var Ball var 被连接数 = {} # 每个怪物被下层怪物连接的数量 最多为2 var 连接1 = {} # 第一次连接的上层怪物位置 var 连接2 = {} # 第二次连接的上层怪物位置 var 怪物数量 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0] # 每层怪物的数量 var 总层数 =8 # 总层数 var 怪物坐标行 = {} #

weixin_45038716的博客 3010

C++软件调试与异常排查从入门到精通专栏介绍与文章汇总

根据近几年排查软件异常的实践与经验,系统地讲解了C++软件异常常见原因与常用排查方法,以图文并茂的方式给出具体的分析实例,带领大家逐步掌握C++软件异常排查的相关技术与要领。

dvlinker的技术专栏 23万+

&|~^<<>>运算符的使用

按位与运算符(&amp;) 参加运算的两个数据,按二进制位进行“与”运算。 运算规则:0&amp;0=0; 0&amp;1=0; 1&amp;0=0; 1&amp;1=1; 按位或运算符(|) 参加运算的两个对象,按二进制位进行“或”运算。 运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1; 取反运算符(~) 参加运算的一个数据,按二进制位进行“取反”运算。 运算规则:~1=0; ~0=1; 异或运算符“^” 用于比较两个二进制数的相应位。在执行按位异或运算时,如果两个二

m0_50654102的博客 1069

MAC-H3C官网inode客户端下载安装

MAC-H3C官网inode客户端下载安装

兴趣是最好的老师 1万+

C:关于位操作符:&、|、^、~的一些应用

关于位操作符的应用

JonlyMay的博客 1185

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【C语言】操作符详解

对一个数的补码二进制位取反,包括符号位扩展:将二进制某一位由0改成1,1改成0的方法。

m0_73648729的博客 835

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C/C++ 位操作符“&” “|” “^”巧妙应用♥

运用位运算符迅速判断二进制1个数,异或操作符实现不设第三变量,交换两变量数值!

qq_62270879的博客 5028

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

操作符详解

本文系统介绍了C语言中的各类操作符及其使用方法。主要内容包括:算术操作符(%、/)的使用规则和注意事项;移位操作符(>>、<<)的运算规则及二进制表示;位操作符(&、|、^)的逻辑运算特性;赋值操作符和复合赋值符;单目操作符(!、&、*、sizeof等)的用法;关系操作符、逻辑操作符、条件操作符、逗号表达式等操作符,以及下标引用、函数调用和结构成员访问操作符。通过代码示例详细说明了各类操作符的具体应用场景和使用技巧

nalazhouzhou的博客 1897

C语言操作符详解(上)

在C语言中,C标准提供了丰富的操作符,被用来对数据进行操作和计算,常用数学计算、比较、逻辑运算等操作。操作符是编程语言中非常重要的一部分,它们可以使程序更加简洁、高效,同时也可以增强代码的可读性和可维护性。本文将详细系统介绍C语言操作符,希望能帮读者全面理解C语言操作符!!

Zhenyu_Coder的博客 1995

[C语言]——按位操作符(与&、异或^、非|)

前言 学习按位操作符的前提是了解变量的储存方式。 比特位:八位(比特位)组成一个字节 char(字符型):占一个字节存储空间 short(短整型):占两个字节存储空间 int(整形):占四个字节存储空间 long(长整型):占八个字节存储空间 float(浮点型):占四个字节存储空间 double(双精度浮点型):占八个字节存储空间 …… 按位操作符:&amp;(与)、^(异或)、|(非) 按位操作符的本质是通过对位操作改变数值。 一、按位操作符是什么? 定义:位操作是程序设计中对位模式按位或二进制数的一元

攻城狮Jana的学习博客 1156

Java笔记——Java 运算符(操作符)&amp;、&amp;&amp;、|、||、^、&lt;&lt;_java &amp;&amp;

因为在if的条件判断中,程序先判断第一个表达式3>2是否成立,结果3>2为真,那么按照逻辑来说,无论后面一个表达式(i++)>1是否成立,整个或表达式肯定为真,因此程序就不去执行判断后面一个表达式即(i++)>1了,所以这里i并没有自增1。则(++i==2)&&(j++==4)的结果为false,其过程基本上和上面的是相同的,但是若左侧表达式的值为false时,程序则不会继续判断右侧表达式的真假了,短路与中,短路这个词大概也就是这个意思吧。2,两个操作数的位中,相同则结果为0,不同则结果为1。

a25847a的博客 890

【c 语言 】位操作符详解

本文将详细解析C语言中的位操作符,包括按位与(&)、按位或(|)和按位异或(^)操作符的工作原理、示例代码以及应用场景,帮助读者深入理解和运用这些强大的工具。

m0_74195174的博客 3372

你真的了解操作符的魅力吗

这便是我当初写下的代码,我就简单说一下,就是将数组和数组长度传入定义的函数function上,然后借助两个循环,和第三变量c,将c每次进循环时初始化为0,当循环过程中除本身外还有其他元素跟arr[ i ]相同时,我们就将c赋值为0,只有找到那个单身狗,即没有其它元素和它相同时 ,c==1,然后返回该元素的大小。a^0=a ------------这也很容易想出来呢,只要a的一个bit位为1跟0肯定是相异,所以为1,所以就等于它本身了。,这个操作符,异或操作符有什么作用呢,我们可以用一个口诀来理解。

2302_81249757的博客 1559

Discussion:Bit Operation(& ,| ,~,<<,>>,^)

什么是位? 简单来说,位就是1和0,在电脑中做的每一件事都是由它们组成的。电脑中所有的数据使用的是位。一个字节由8个位组成;一个字由两个字节组成,即16个位;而一个双字由四个字节组成,即32个位。由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快 位运算有哪些操作...

chenqunan3231的博客 109

常见操作符的解释

本文系统介绍了编程中常用的操作符及其特性。主要内容包括:1.算术运算操作符(+、-、*、/、%)的使用规则及数值溢出问题;2.赋值操作符的连续使用和复合赋值;3.位运算操作符(移位运算和逻辑运算)的原理及典型应用;4.逗号表达式的执行规则;5.单目操作符(自增/自减、正负号、sizeof、强制类型转换、取地址/解引用)的使用方法;6.操作符的优先级和结合性对表达式求值顺序的影响。

qjx的博客 785

【C语言】异或(^)操作符

包含数学逻辑操作符异或(^)的简介,运算法则,逻辑,作用,巧用,与加减运算的关系等内容.

C/C++领域,数据结构,linux,MySQl学习者 1万+

新手友好!位操作符详解、操作符系统简易介绍

本文系统介绍了操作符相关知识,重点解析二进制相关操作符。首先将操作符按功能分类,并说明优先级和结合性两大执行原则。其次详细讲解原码、反码、补码的表示规则,指出整型数据在内存中以补码形式存储。然后深入分析位操作符(&amp;、|、^、~)和移位操作符(&lt;&lt;、&gt;&gt;)的执行逻辑及特性,通过示例说明其运算机制。此外还介绍了条件操作符、逗号操作符的使用方法。最后阐述了整型提升和算术转换两个重要概念,区分其应用场景。全文旨在帮助读者全面理解操作符体系,特别是掌握二进制相关操作符的运作原理。

eluelu的博客 577
上一篇: 指针与指针变量的区别
下一篇: VC中如何产生随机数
咸鱼有梦
博客等级 码龄15年 3粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值