ARTICLE DETAIL

资讯详情

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

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

嵌入式从0到精通——C语言位运算 1.位运算 按位于 全1为1有0为0 | 按位或 有1为1全0为0 ^ 按位异或 相同为0相异为1 ~ 按位取反 1取反为00取反为1 按位左移 按位左移低位补0 nun n num 2^n 按位右移 按位右移有符号数高位补符号位 num n num/2^n位运算的使用1.指定n位置10000 0000 -- 0000 0100 0000 0001 1 3 0000 0000 1010 0000 | 0000 1000 1010 1000 num num | 1 n;2.指定n位清01010 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) // 最终结果: a3, b5 // 代码实现: 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调试段错误rwhere 定位段错误的位置1.编译程序 -g选项允许使用gdb进行调试gcc main.c -g;2.使用gdb调试程序gdb ./可执行程序gdb ./a.out3.gdb指令l 列出源代码b行号 在指定行打断点r 运行程序n 执行下一行代码p 变量名 查看变量值q 退出gdbs 跟进函数
返回列表