C基础第16课 位运算符分析

c语言深度剖析(16)—位运算符分析 1.C语言中的位运算符 位运算符直接对bit位进行操作,其效率最高 2.左移和右移注意点 左操作数必须为整型类型:char和short被隐式转换为int后进行移位操作 右操作数的范围必须为:[0,31],其他值属未定义行为,不同编译器处理不同。 左移运算符<< 将运算数的二进制位左移:规则为高位丢弃,低位补0 右移运算符>> 把运算数的二进制位右移:规... 阅读详情

学习自狄泰软件学院唐佐临老师C语言课程,文章中图片取自老师的PPT,仅用于个人笔记。


实验1
实验2 :交换两个整形变量的值方法一 :定义中间变量,麻蛋 低级
实验3 :交换两个整形变量的值方法二 :部分和 ,但是不能满足两个非常大的int型数据相加结果溢出int类型范围的情况
实验4 :交换两个整形变量的值方法三 :位运算 按位异或,最简洁 最高效
实验5:按位或按位与 VS 逻辑或逻辑与


在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

实验1

在这里插入图片描述

结论:
1 四则运算的优先级高于位运算

2 在位运算中,右操作数的范围必须是:[0,31],向上面最后一个打印,3 << -1 的值,完全由编译器生产厂商来决定 一个整移位-1 倒是是什么,这里gcc编译器比较有意思,gcc编译器的生产厂商认为 左移-1 就是 右移 1,但是其他的编译器又有其他自己的规定,所以一定要注意 在位运算中,右操作数的范围必须是:[0,31]!!!!

在这里插入图片描述

实验2 :交换两个整形变量的值方法一 :定义中间变量,麻蛋 低级

#include <stdio.h>

#define SWAP1(a, b)    \
{                      \
    int t = a;         \
    a = b;             \
    b = t;             \
}

int main()
{
    int a = 1;
    int b = 2;
    
    
    printf("a = %d\n", a); 
    printf("b = %d\n", b); 
    
    SWAP1(a ,b);
    
    printf("a = %d\n", a); 
    printf("b = %d\n", b); 
    
    return 0;
}

在这里插入图片描述

实验2 :交换两个整形变量的值方法二 :部分和 ,但是不能满足两个非常大的int型数据相加结果溢出int类型范围的情况

#include <stdio.h>

#define SWAP2(a, b)    \
{                      \
    a = a + b;         \
    b = a - b;         \
    a = a - b;         \
}

int main()
{
    int a = 1;
    int b = 2;
    
    
    printf("a = %d\n", a); 
    printf("b = %d\n", b); 
    
    SWAP2(a ,b);
    
    printf("a = %d\n", a); 
    printf("b = %d\n", b); 
    
    return 0;
}

在这里插入图片描述

实验3 :交换两个整形变量的值方法三 :位运算 按位异或,最简洁 最高效

#include <stdio.h>

#define SWAP3(a, b)    \
{                      \
    a = a ^ b;         \
    b = a ^ b;         \
    a = a ^ b;         \
}

int main()
{
    int a = 1;
    int b = 2;
    
    
    printf("a = %d\n", a); 
    printf("b = %d\n", b); 
    
    SWAP3(a ,b);
    
    printf("a = %d\n", a); 
    printf("b = %d\n", b); 
    
    return 0;
}

在这里插入图片描述

在这里插入图片描述

实验4:按位或按位与 VS 逻辑或逻辑与

按位或按位与
在这里插入图片描述

逻辑或逻辑与
在这里插入图片描述

在这里插入图片描述

6种位运算符详解和运用(c语言) 1.与(&)运算符 使用规则:两个二进制操作数对应位同为1 结果位 才为1,其余情况为0; 例如:整数 a = 15   整数 b = 127 计算:(a & b) 15 的二进制位:0000 1111 127 的二进制为:0111 1111 即:(a & b) = 15 2.或(|)运算符 使用规则:两个二进制操作数对应位只要有一个为1 结果位 就为1,其余情况为0; 例如:整数 b = 127   整数 c = 128 计算:(b | c) 127 的二进制位:0111 1111 阅读详情

相关推荐

实战指南 | 快速修复Adobe Acrobat 2020安装过程中的常见注册表错误

本文提供了Adobe Acrobat 2020安装过程中遇到“无法打开键”注册表错误的详细修复指南。通过安全编辑注册表,精准定位并删除残留键值,可快速解决此常见安装报错,确保软件顺利安装。同时,文章也介绍了其他安装问题的应对策略与预防措施。

weixin_29200485的博客 562

Makefile1-- make 与 makefile

学习自狄泰软件学院唐佐临老师Makefile课程,文章中图片取自老师的PPT,仅用于个人笔记。

奶牛养殖场小马 356

ChatIE:基于ChatGPT的零样本信息抽取实战指南

信息抽取是自然语言处理中的核心任务,旨在从非结构化文本中自动识别并结构化关键信息,如实体、关系及事件。传统方法依赖大量标注数据训练专用模型,流程复杂且成本高昂。随着大语言模型的发展,通过提示工程引导模型理解任务,实现了无需训练数据的零样本抽取能力,极大降低了技术门槛与应用成本。这种范式将信息抽取重构为多轮对话问题,通过分阶段提问引导模型逐步输出结构化结果,在快速原型验证、领域适配及小规模数据探索中展现出显著技术价值。本文以ChatIE项目为例,深入解析如何利用ChatGPT API,通过精心设计的提示词与两

weixin_30540691的博客 404

C语言进阶课程学习记录-第16课 - 位运算符分析

本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程,图片全部来源于课程PPT,仅用于个人学习记录。左移和右移运算符的右操作数范围必须为[0, 31]位运算没有短路规则,所有操作数均会求值。运算优先级:四则运算>位运算>逻辑运算。位运算的效率高于四则运算和逻辑运算。位运算符只能用于整数类型。

qq_35429166的博客 471

PPO算法详解:基于CartPole-v1的强化学习实现

PPO算法详解:基于CartPole-v1的强化学习实现

m0_54720701的博客 865

超详细!动态规划详解分析(典型例题分析和对比,附源码)

为啥要使用动态规划?什么时候使用动态规划?以下是我的一些理解和心得,如果你感兴趣,就接着往下看吧。 对您有帮助的话记得给我点个赞哟! 动态规划的基本思想 动态规划(Dynamic Programming,DP)算法通常用于求解某种具有最优性质的问题。在这类问题中,可能会有许多可行解,每一个解都对应一个值,我们希望找到具有最优值的解。 动态规划算法与分治法类似,其基本思想也是将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解中 得到原有问题的解。与分治法不同的是,动态规划经分解后得到的子问题

qq_44398094的博客 8万+

C语言进阶剖析 16 位运算符分析

位运算符分析 C 语言中的位运算符 &nbsp;&nbsp;&nbsp;&nbsp;○ 位运算符直接对 bit 位进行操作,其效率最高! 左移和右移注意点 &nbsp;&nbsp;&nbsp;&nbsp;○ 左操作数必须为整数类型 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;■ char 和 short 被隐式转

Linux Openharmony Android Graphics Stack! 1811

DPABI实战:手把手教你处理小鼠静息态fMRI数据(从Voxel Size到SPM完整流程)

本文详细介绍了使用DPABI处理小鼠静息态fMRI数据的完整流程,从Voxel Size调整到SPM分析,涵盖预处理、质量控制和可视化等关键步骤。针对小鼠数据特有的低分辨率和信噪比问题,提供了实战建议和避坑指南,帮助研究人员高效完成数据分析。

weixin_42663213的博客 477

C(16)位运算符分析

文章目录1. C语言中的位运算符2. 左移与右移3. 位运算与逻辑运算的区别4. 总结 1. C语言中的位运算符 位运算符 名称 & 按位或 | 按位与 ^ 按位异或 ~ 取反 << 左移 >> 右移 2. 左移与右移 做操作数必须为整数类型,char 和 short 被隐式转换为int后进行位操作 右操作数的范围必须时 [0,31] ,超过这个范围是未定义行为,由编译器厂商决定 左移运算符 << 将运算数的二进制位左移,

清浅 1336

STM32 FMC驱动AD7606实战:从硬件连接到时序调试全流程解析

本文详细解析了STM32 FMC驱动AD7606的全流程,包括硬件连接、FMC接口配置、驱动程序设计和时序调试。通过实战案例,展示了如何利用STM32的FMC总线实现与AD7606的高效数据传输,特别强调了电源设计、信号连接和PCB布局等关键要点,为嵌入式数据采集系统开发提供了实用指导。

aa123的博客 1005

STM32HAL库 基于外部Flash+FatFs模拟U盘方式进行固件拷贝升级(详解)

STM32HAL库 基于外部Flash+FatFs模拟U盘方式进行固件拷贝升级

qq_36075612的博客 1万+

16-位运算符分析

注:博客中内容主要来自《狄泰软件学院》,博客仅当私人笔记使用。 测试环境:Ubuntu 10.10 GCC版本:4.4.5 一、位运算符分析 1)C语言中的位运算符 位运算符直接对bit位进行操作,其效率最高。 2)左移和右移注意点 - 左操作数必须为整数类型 *char和short被隐式转换为int后进行移位操作 - 右操作数的范围...

第一大剑豪——索隆 515

ENSP之配置静态路由

ENSP之配置静态路由 两台路由器两台PC 拓扑图如下: 配置AR1线路上的两条IP地址 配置AR2线路上的两条IP地址 3.AR2上 配置静态IP 路由 AR1上 配置静态IP 路由 设置两台PC 的IP地址 网关 PC1 PC2 全部配置好了之后 现在测试PC1是否ping 得通PC2 在命令行输入 成功的话如下图 ...

浪友与泪的博客 3545

【C语言学习记录16】 位运算符分析

C语言中的位运算符 位运算符直接对bit位进行操作,其效率最高。(比四则运算高很多) 左移和右移注意点: 1)左操作数必须为整数类型; char和short被隐式转换为int后进行移位操作。 2)右操作数的范围必须为:[0,31] 左移-1或者右移32结果不确定,因为标准C没规定其行为,编译器开发商定义。 3)左移运算符<<将运算数的二进制左移; ...

haibing_x的博客 547

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

c语言位运算符

c语言位运算符,相关宏讲解

hutaotaotao的博客 2768

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

C语言位运算符基础

C语言位运算符:与、或、异或、取反、左移和右移 位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型。 C语言提供的位运算符列表: 运算符 含义 描述 & 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0 ...

kevinchan1207的博客 1424

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C语言-位运算符

示例:设字符型 x 的当前值为 53,将其最低两位清 0,其余位保持不变。示例:设字符型 x 的当前值为 53,将其最低两位置 1,其余位保持不变。示例:设字符型 x 的当前值为 53,将其最低两位取反,其余位保持不变。示例:设字符型 x 的当前值为 53,保留其最低 4 位,其余位清零。运算规则:对应位一个为1一个为0,才为1,否则为0。运算规则:对应位只要有1即为1,否则为0。运算规则:对应位都是1才为1,否则为0。待保留位全部与 1,其余位与 0。待置为1的位或1,其它位或0。

lemonzjk的博客 4611

【C语言进阶剖析】16、位运算符分析

C 语言中的位运算符直接对 bit 位进行操作,其效率最高 位运算符 含义 & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1 位运算符分析 ...

桑凯旋的博客 549

【C】位运算符

本文介绍了C语言中的位操作运算符及其应用。

Spirithjl的博客 1137

【C】16.位运算符分析

C语言中的位运算符 位运算符直接对 bit 位进行操作,其效率最高 左移和右移注意点 左操作数必需为整数类型 右操作数的范围必需为:【0,31】 左移运算符 << 将运算符的二进制位左移动 右移运算符 >> 把运算符的二进制位右移动 char 和short 被隐士转换为 int 后进行移位操作 如果出现负数(-1)的情况编译厂家不同,结果不同 规则...

zhabin0607的博客 258

【C语言进阶剖析】16.C语言中的位运算符分析

文章目录 一、位运算符分析 二、小贴士 三、位运算与逻辑运算 四、小结 一、位运算符分析 C语言中的位运算符 位运算符直接对 bit 位进行操作,其效率最高。 & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 左移和右移注意点 左操作数必须为整数类型 char 和 short 被隐式转换为 int 后进行移位操作 右操作数的范围必须为:[0,3...

老胡的博客 682

深入剖析C语言位运算符:原理与应用

本文详细介绍了C语言中的位运算符,包括按位取反( ~ )、左移( << )、右移( >> )、按位与( & )、按位异或( ^ )、按位或( | )。通过具体代码示例展示了各运算符的功能及运算原理,如按位取反是对操作数的每一位取反,左移是将操作数二进制位向左移动指定位数,低位补0等。同时指出位运算符在数据压缩与编码解码、访问控制与权限管理、硬件接口控制等诸多领域有着广泛应用,熟练掌握位运算能提升C语言程序的性能和灵活性。

weixin_47444202的博客 1287

c语言:位运算符

简介 位运算符用来对二进制位进行操作,Java中提供了如下表所示的位运算符:位运算符中,除 ~ 以外,其余均为二元运算符。 操作数只能为整型和字符型数据。 C语言中六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~取反 >>右移 <<左移 运算方法 按位与运算 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 位运算.

cmx0128的博客 3870

复习c语言深度剖析(16)—位运算符分析

1.C语言中的位运算符 位运算符直接对bit位进行操作,其效率最高 2. 左移和右移注意点 左操作数必须为整型类型:char和short被隐式转换为int后进行移位操作 右操作数的范围必须为:[0,31],其他值属未定义行为,不同编译器处理不同。 左移运算符 << 将运算数的二进制位左移:规则为高位丢弃,低位补0 右移运算符 >> 把运算数的二...

weixin_43478148的博客 289

【C语言】位运算符总结

位运算符一共有如下七个。 整数在计算机中用二进制的位来表示,C语言提供一些运算符可以直接操作整数中的位,称为位运算,这些运算符的操作数都必须是整型的。 ——下面带大家分别来看看它们各自的含义与用法—— 按位于运算符——& 按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位都为1时,结果位才为1。参与运算的两个数均以补码出现。 其所...

桺柒郞的小小屋 551

C语言进阶第16式:位运算符分析

C语言中的位运算符如何使用?注意事项有哪些?

东川 409
上一篇: Makefile8--条件判断语句
下一篇: C基础第17课 ++和--操作符分析
Ma浩然
博客等级 码龄9年 1万+粉丝 462原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ma浩然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值