ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

嵌入式从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 跟进函数

返回列表