【C语言】操作符详解(二)

目录

移位操作符

左移操作符

右移操作符

位操作符:&、|、^、~

一道面试题


移位操作符

<<左移操作符                                                                                                                             >>右移操作符
注:移位操作符的操作数只能是整数

 左移操作符

移位规则:左边抛弃、右边补0

#include <stdio.h>
int main()
{	int num = 10;int n = num << 1;printf("n=%d\n", n);printf("num=%d", num);return 0;
}

结果如下:

左移操作符演示

右移操作符

移位规则:首先右移运算分两种:
1.逻辑右移:左边用0填充,右边丢弃
2.算术右移:左边用原该值的符号位填充,右边丢弃

#include <stdio.h>
int main()
{	int num = 10;int n = num >> 1;printf(" n=%d\n", n);printf(" num=%d\n", num);return 0;
}

结果如下

逻辑右移一位演示

算数右移一位演示

 🔺警告:对于位移运算不要移动负数位,这个是标准未定义的

例如:

int num=10;
num>>-1;//error

位操作符:&、|、^、~

&          按位与

|           按位或

^          按位异或

~          按位取反

⭐注:他们的操作数必须是整数。

#include <stdio.h>
int main()
{int num1 = -3;int num2 = 5;printf(" %d \n", num1 & num2);printf(" %d \n", num1 | num2); printf(" %d \n", num1 ^ num2); printf(" %d \n",~0);return 0;
}

运行结果如下:

一道面试题

题目描述:不能创建临时变量(第三个变量),实现两个数的交换。

代码如下:

#include <stdio.h>
int main()
{int a = 8;		//a == 0000 1000int b = 10;		//b == 0000 1010a = a ^ b;		//a^b == 0000 0010 赋值给a a == 0000 0010b = a ^ b;		//a^b == 0000 1000 赋值给b b == 0000 1000 ==8a = a ^ b;		//a^b == 0000 1010 赋值给a a == 0000 1010 ==10printf(" a=%d b=%d", a, b);
}

运行结果如下:

 以上便是我为大家带来的操作符详解(二)的内容,若有不足,望各位大佬在评论区指出,谢谢大家!可以留下你们点赞、收藏和关注,这是对我极大的鼓励,我也会更加努力创作更优质的作品。再次感谢大家!

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

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

相关文章

智能优化算法应用:基于布谷鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于布谷鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于布谷鸟算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.布谷鸟算法4.实验参数设定5.算法结果6.参考文…

点评项目——用户签到模块

2023.12.13 通常app为了吸引用户每天登陆app&#xff0c;会设定一个签到模块&#xff0c;本章就来实现用户签到模块&#xff0c;包含签到功能和签到统计功能。 BitMap用法 通常使用二进制位来记录每个月的签到情况&#xff0c;签到记录为1&#xff0c;未签到记录为0。每一个bi…

MacOS环境配置一系列问题的汇总,方便以后自己查看

环境配置一系列问题的汇总&#xff0c;方便以后自己查看 man brew报错“No manual entry for brew” 解决方法记录&#xff1a; 解决问题之前尝试的方法&#xff1a; Linking manuals from Homebrew1 https://apple.stackexchange.com/questions/111061/linking-manuals-f…

2000-2022年上市公司数字化转型数据(年报词频、文本统计)

2000-2022年上市公司数字化转型数据&#xff08;年报词频、文本统计&#xff09; 1、时间&#xff1a;2000-2022年 2、来源&#xff1a;上市公司年报、巨潮资讯网 3、方法说明&#xff1a;参考管理世界中吴非&#xff08;2021&#xff09;的做法&#xff0c;对人工智能技术、…

做题总结 19. 删除链表的倒数第 N 个结点(快慢指针思想)

19. 删除链表的倒数第 N 个结点 最初的想法进阶实现&#xff08;Java&#xff09; 最初的想法 计算出链表中的节点总数&#xff0c;然后遍历找到目标节点并删除。 class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode cur head;int count0;w…

Ubuntu 设置共享文件夹

一、在Windows中建立一个英文的文件夹 注意&#xff1a;新建文件夹的名称一定要是英文的&#xff0c;不能出现中文的路径&#xff08;可能出现问题&#xff09; 二、在VMware中添加共享文件 3: VMware安装VMware Tools 一般安装成功桌面上会显示这个安装包&#xff0c;&…

大型软件编程实际应用实例:个体诊所电子处方系统,使用配方模板功能输入症状就可开出处方软件操作教程

一、前言&#xff1a; 在开电子处方的时候&#xff0c;如果能够输入症状就可以一键导入配方&#xff0c;则在很大程度上可以节省很多时间。而且这个配方可以根据自己的经验自己设置&#xff0c;下面以 佳易王诊所电子处方软件为例说明。 二、具体一键导入配方详细操作教程 点击…

学习Java第68天,MVC架构模式理论简介

一.MVC架构模式 MVC&#xff08;Model View Controller&#xff09;是软件工程中的一种软件架构模式&#xff0c;它把软件系统分为模型、视图和控制器三个基本部分。用一种业务逻辑、数据、界面显示分离的方法组织代码&#xff0c;将业务逻辑聚集到一个部件里面&#xff0c;在改…

01java语言基础

一、初始计算机和Java语言 1、计算机的体系结构 a.计算机的基本概念 计算机(Computer)俗称电脑&#xff0c;是现代一种用于高级计算&#xff0c;使用非常广泛 的设备&#xff0c;主要由计算机硬件和计算机软件两个部分组成。 • 计算机硬件是客观存在的各种计算机相关设备&a…

提升工作效率,尽在Microsoft Office LTSC 2021 for Mac!

在当今的办公环境中&#xff0c;高效率的工作是每个人都追求的目标。作为全球领先的办公软件套装&#xff0c;Microsoft Office LTSC 2021 for Mac将为您提供一站式的解决方案&#xff0c;帮助您轻松应对各种工作任务。 首先&#xff0c;Microsoft Office LTSC 2021 for Mac拥…

C# 通俗讲解Public、Private以及Protected、[HideInInspector]、[SerializeField]的区别

一、故事背景 1.我画了一幅画&#xff0c;把它放在室外&#xff0c;所有人都可以看见这个画&#xff0c;所有人都可以对这个画进行修改。 2.我非常非常努力&#xff0c;赚了一大笔钱&#xff0c;这笔钱&#xff0c;只能我和我的子孙后代用&#xff0c;但如果我的孩子需要传给他…

jmap命令的实现原理解析

jmap可以做什么&#xff1f; 1、jmap -histo[:live] 通过histo选项&#xff0c;打印当前java堆中各个对象的数量、大小。 如果添加了live&#xff0c;只会打印活跃的对象。 2、jmap -dump:[live,]formatb,file 通过-dump选项&#xff0c;把java堆中的对象dump到本地文件&a…

leaflet使用热力图报L找不到的问题ReferenceError: L is not defined at leaflet-heat.js:11:3

1.在main.js中直接引入会显示找不到L 2.解决办法 直接在组件中单独引入使用 可以直接显示出来。 至于为什么main中不能引入为全局&#xff0c;我是没找到&#xff0c;我的另外一个项目可以&#xff0c;新项目不行&#xff0c;不知哪里设置的问题

【小聆送书第二期】人工智能时代AIGC重塑教育

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;正文&#x1f4dd;活动参与规则 参与活动方式文末详见。 &#x1f4cb;正文 AI正迅猛地…

【技巧】导出和导入Typecho的文章数据

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 背景介绍 1、要换服务器了&#xff0c;虽然Typecho和Theme都可以重装&#xff0c;但文章数据由于是存在数据库里的&#xff0c;所以需要额外一些操作才行。 2、在进行下面的数据导入导出之前&#xff0c;新服务器…

GitHub Copilot - Elasticsearch 和 MySQL 单表查询耗时比对

当单表数据库超过百万后&#xff0c;数据库 like %xxx% 查询明显变慢&#xff0c;为了对比 Elasticsearch 的效果&#xff0c;将百万级的测试数据导入到 Elasticsearch 中对比看看效果。导入和查询 Elasticsearch 的过程完全通过 GitHub Copilot Chat 辅助编码。 Elasticsearc…

3.0 kVrms电压隔离: ADUM162N0BRZ、ADUM163N1BRZ、ADUM1281CRZ、ADUM1285CRZ通用多通道隔离(数字隔离器)

一、ADUM162N、ADuM163N 集成故障安全和2、3个反向通道的鲁棒3.0 kV rms六通道数字隔离器 ADuM162N / ADuM163N 均为采用ADI公司iCoupler技术的6通道数字隔离器。这些隔离器件将高速、互补金属氧化物半导体(CMOS)与单芯片空芯变压器技术融为一体&#xff0c;具有优于光耦合器件…

源代码泄密困扰企业?上海迅软DSE助力解决问题

源代码是软件开发最重要的资源&#xff0c;同时也是开发人员思想、经验和工作的结晶。对于软件开发企业来说&#xff0c;实施有效的源代码防泄密措施至关重要&#xff0c;因为源代码文档和程序文档都具有极高的商业价值&#xff0c;属于企业的商业机密。 为了确保企业的源代码…

Java_Mybatis_缓存

缓存 1.概述 Mybatis 缓存&#xff1a;MyBatis 内置了一个强大的事务性查询缓存机制&#xff0c;它可以非常方便地配置和定制 2.会话缓存&#xff08;一级缓存&#xff09; sqlSession 级别的&#xff0c;也就是说&#xff0c;使用同一个 sqlSession 查询同一 sql 时&#x…

YOLOv7独家原创改进:SPPF自研创新 | SPPF创新结构,重新设计全局平均池化层和全局最大池化层,增强全局视角信息和不同尺度大小的特征

💡💡💡本文原创自研创新改进:SPPF_improve利用全局平均池化层和全局最大池化层,加入一些全局背景信息和边缘信息,从而获取全局视角信息并减轻不同尺度大小所带来的影响 强烈推荐,适合直接使用,paper创新基本 💡💡💡 在多个数据集验证涨点,尤其对存在多个尺…