news 2026/8/11 10:22:17

Linux入门DAY17(位运算与LinuxGDB调试)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux入门DAY17(位运算与LinuxGDB调试)

#位运算# #Linux调试# #GDB#

前言

本篇笔记梳理C语言底层核心位运算全部考点,同时配套Linux开发必备的GDB调试工具完整操作指南。位运算常用于嵌入式底层寄存器操作、数据加密、数值交换;GDB是定位段错误、逻辑bug的核心工具,期末笔试、嵌入式面试均高频考察,内容精简贴合考试与实操需求。

一、位运算符基础

1. 六大位运算规则

运算符 名称 运算规则

& 按位与 全1出1,有0出0

| 按位或

^ 按位异或 二进制位相同为0,相异为1

~ 按位取反 1变0,0变1,唯一单目位运算符

<< 左移 整体左移n位,低位补0,等价乘以

>> 右移 无符号数高位补0;有符号数高位补符号位,等价除以

2. 位运算优先级(从高到低)

~ > << 、 >> > & > ^ > |

注意:位运算优先级低于加减乘除,复杂表达式建议手动加括号避免逻辑错误。

二、位运算经典实操代码(考试必考)

1. 数字指定二进制位置置1

// 将num的第n位设置为1,其余位保持不变

num = num | (1 << n);

原理: 1 << n 构造掩码,仅第n位为1,或运算强制置1。

2. 数字指定二进制位清0

// 将num的第n位设置为0,其余位保持不变

num = num & ~(1 << n);

原理: ~(1 << n) 构造掩码,仅第n位为0,与运算强制清0。

3. 不借助中间变量交换两个整数

方案1:异或法(推荐,无溢出)

a = a ^ b;

b = a ^ b;

a = a ^ b;

方案2:加减法(存在大数溢出缺陷)

a = a + b;

b = a - b;

a = a - b;

三、程序调试两种方案

1. printf打印调试(简易入门)

在代码关键流程插入 printf() 打印变量、执行标记,通过输出内容判断程序运行逻辑。

优点:无需额外工具,上手零成本;

缺点:复杂程序需要频繁增删打印语句,调试效率低。

2. GDB调试工具(Linux嵌入式必备)

GDB是GNU官方开源代码调试工具,专门用于定位逻辑错误、段错误。

(1)编译带调试信息程序

编译时追加 -g 参数,向可执行文件写入源码调试信息:

gcc main.c -g

(2)启动GDB

gdb ./a.out

(3)核心常用指令汇总

指令 全称 功能

l list 查看程序源代码

b 行号 break 在指定代码行设置断点

r run 从头运行程序,遇到断点暂停

n next 单步执行下一行,不进入函数内部

s step 单步执行,跟进函数内部代码

p 变量名 print 实时查看当前变量存储的值

where - 定位段错误崩溃的代码位置

q quit 退出GDB调试终端

(4)两大适用场景

1. 排查逻辑错误:单步跟踪变量变化,定位判断、循环逻辑漏洞;

2. 排查段错误:空指针、数组越界、非法内存访问,使用 where 一键定位崩溃行。

小结

1. 位运算核心:移位实现乘除2、与或异或实现二进制位修改,异或交换数字是笔试高频编程题;

2. 移位区分有符号/无符号数据,负数右移高位补符号位,左移低位统一补0;

3. 调试分两种方式:简单程序用printf打印,Linux嵌入式开发必须掌握GDB;

4. GDB使用前提:编译添加 -g 参数,核心指令记住断点、单步、打印变量、定位崩溃四大功能。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/11 10:22:14

AI 会自主攻击?会做,不等于想做

最近常能看到一些说法&#xff1a;AI 已经会“自主攻击”、会发现漏洞&#xff0c;甚至能“逃出沙箱”。 这些说法并不完全错&#xff0c;但很容易把两件不同的事混在一起&#xff1a;目标是谁给的&#xff1f;目标给定以后&#xff0c;还需要人指导多少&#xff1f;现在大多数…

作者头像 李华
网站建设 2026/8/11 10:22:06

华为光猫配置解密工具:高效解决网络设备管理的技术难题

华为光猫配置解密工具&#xff1a;高效解决网络设备管理的技术难题 【免费下载链接】HuaWei-Optical-Network-Terminal-Decoder 项目地址: https://gitcode.com/gh_mirrors/hu/HuaWei-Optical-Network-Terminal-Decoder 在网络设备管理中&#xff0c;华为光猫配置文件的…

作者头像 李华
网站建设 2026/8/11 10:20:54

自托管代码大模型:从模型选型到IDE集成的完整部署指南

最近在跟几个技术团队交流时&#xff0c;发现一个挺有意思的现象&#xff1a;大家一边在热烈讨论各种最新的AI编程助手&#xff0c;一边又对数据安全和成本控制感到焦虑。一个后端团队leader直接问我&#xff1a;“有没有一种方案&#xff0c;能让我们在内部服务器上部署一个‘…

作者头像 李华
网站建设 2026/8/11 10:20:53

ZLibrary反爬机制分析与绕过方案

1. 项目背景与核心挑战 最近在研究ZLibrary这个全球知名的电子书资源平台时&#xff0c;发现它的反爬机制越来越复杂。作为一个技术研究者&#xff0c;我决定对其防护体系进行系统性分析&#xff0c;并整理出一套可行的绕过方案。这个项目不仅涉及常规的反爬对抗&#xff0c;还…

作者头像 李华
网站建设 2026/8/11 10:20:29

程序员身心修复指南:从五脏同调框架到健康系统运维

1. 背景与核心概念&#xff1a;从代码“过载”到开发者“身心耗竭” 在快节奏的技术迭代与高压的项目交付周期中&#xff0c;许多开发者都经历过这样的状态&#xff1a;长时间加班后&#xff0c;不仅感到身体疲惫、注意力涣散&#xff0c;甚至会出现食欲不振、睡眠质量差、情绪…

作者头像 李华
网站建设 2026/8/11 10:20:19

Visual Studio C++环境配置全攻略:5步搭建高效开发环境

1. 项目概述&#xff1a;为什么C环境配置总让人头疼&#xff1f; 每次打开Visual Studio&#xff0c;准备大干一场&#xff0c;结果光是配置环境就耗掉半天&#xff0c;这种感觉是不是很熟悉&#xff1f;尤其是对于C这门“贴近硬件”的语言来说&#xff0c;环境配置的复杂度直接…

作者头像 李华