当前位置: 首页 > news >正文

嵌入式从0到精通——C语言位运算

1.位运算

& 按位于 全1为1,有0为0 | 按位或 有1为1,全0为0 ^ 按位异或 相同为0,相异为1 ~ 按位取反 1取反为0,0取反为1 << 按位左移 按位左移,低位补0 nun << n <==> num << 2^n >> 按位右移 按位右移,有符号数,高位补符号位 num >> n <==> num/2^n

位运算的使用:

1.指定n位置1

0000 0000 --> 0000 0100 0000 0001 1 << 3 0000 0000 1010 0000 | 0000 1000 1010 1000 num = num | 1 << n;

2.指定n位清0

1010 1000 --> 1010 0000 1111 0111 // 1 << 3 然后取反 1010 1000 & 1111 0111 1010 0000 num = num & ~(1 << n);

3.两数交换

// 使用异或运算交换两个整数 int a = 5; // 二进制: 0101 int b = 3; // 二进制: 0011 // 第一步: a = a ^ b // a = 0101 ^ 0011 = 0110 (6) // b = 0011 (3) // 第二步: b = a ^ b // a = 0110 (6) // b = 0110 ^ 0011 = 0101 (5) // 第三步: a = a ^ b // a = 0110 ^ 0101 = 0011 (3) // b = 0101 (5) // 最终结果: a=3, b=5 // 代码实现: a = a ^ b; // 第一步 b = a ^ b; // 第二步 a = a ^ b; // 第三步 // 或者写成一行: // a ^= b ^= a ^= b;

按位运算符的优先级:从大到小
~ << >> & ^ |

2.程序调试方法

1.打印调试

程序运行过程中打印输出 printf(" num = %d",num);

2.gdb调试

gnut提供的Linux下的代码调试工具。

1.使用gdb调试逻辑错误

2.使用gdb调试段错误

r

where 定位段错误的位置

1.编译程序: -g选项;允许使用gdb进行调试

gcc main.c -g;

2.使用gdb调试程序:

gdb ./可执行程序

gdb ./a.out

3.gdb指令

l 列出源代码

b+行号 在指定行打断点

r 运行程序

n 执行下一行代码

p + 变量名 查看变量值

q 退出gdb

s 跟进函数

http://www.jsqmd.com/news/1392396/

相关文章:

  • 软件开发各阶段:阶段目标、核心工具、常用技术
  • 不是只改API地址:我把OpenWiki接入蓝耘元生代,完整实测代码文档生成与增量更新
  • 点赞动画可以先跑,接口状态必须能回滚
  • C++ OpenCV复刻Photoshop HSL分通道调色|六色独立羽化调节、非线性光影映射、适配图像修图与视觉检测
  • 2026年义乌西装定制指南:千元到万元预算全解析 - 新闻快传
  • 缓存命中率99.93%,DeepSeek最适合的Harness来了,GitHub狂揽8.6万Star
  • 学 Simulink—— 考虑电网频率波动的整流器锁相环(PLL)失锁分析仿真
  • 告别风扇噪音困扰:如何用FanControl软件3步搞定风扇控制难题
  • 别再凭感觉猜时间了!这款免费开源的Windows时间管理工具,帮你精准统计软件与网站使用时长
  • 【信息科学与工程学】计算机科学与自动化——第十八篇 存储系统设计101 存储系统与网络组网的问题数学分析02
  • scrcpy安卓投屏指南:不装App不root,一条命令把手机屏幕搬上电脑
  • Linux O(1)调度器 VS CFS完全公平调度器
  • 终于有人把上位机说清楚了!干了8年老鸟一张图讲透:它到底是个啥,里面装的都是啥
  • Resources原语:让AI读取你的数据
  • 超全!小学1-6年级古诗词专属字体字帖电子版,练字背诗一举两得(可直接打印)
  • 把MCP Server接入Claude Desktop和Cursor
  • AI自治云优化等级天梯:自治能力的 6 个层级
  • 网络安全渗透测试:信息搜集全流程指南
  • 华硕笔记本控制权争夺战:G-Helper一天上手,性能、散热与续航全面解放
  • 国内靠谱的造粒机厂家哪家专业 - 甄选测评馆
  • 2026年当下:太原聚酯抗裂纤维售价不想后期频繁维修,基体韧性得靠纤维加持-烁承工程材料 - 行业甄选汇
  • palera1n越狱工具完整指南:一键解锁A8至A11芯片iOS设备的自由
  • C语言指针高频误区:为什么栈指针不能返,malloc堆指针可以返?​
  • 日志分析工具KLOGG:如何实现10GB日志文件的秒级快速搜索
  • 安全防护基础:认证授权、输入消毒、权限控制
  • ECDF:怎么看大模型 TTFT 的 P50、P90 和 P99?
  • 零基础学SQL 04:WHERE条件总写错?AND/OR/IN一图搞懂
  • 【手机+电脑】通达信《牛转乾坤》V2.00策略战法套装标策略解析使用说明书
  • Windows时间追踪免费工具实测:3分钟装好Tai,看清每天时间都花在了哪
  • 企业实战:导入数据节点