
一、位运算详解1. 位运算符速查表 按位与 全1为1有0为0 | 按位或 全0为0有1为1 ^ 按位异或 相异为1相同为0 ~ 按位取反 1取反为00取反为1 按位左移 按位左移低位补0 num n -- num * 2^n 按位右移 按位右移高位补符号位 num n -- num / 2^n2. 位运算的典型应用1指定 n 位置 11010 0000 | 0000 1000(1 3) 1010 1000 num num | 1 n; // 优先级高于 |2指定 n 位置 01010 1010 1111 0111(~(1 3)) 1010 0010 num num ~ (1 n); // ~ 优先级高于 高于 3两数交换不使用中间变量// 按位异或方式 a a ^ b; b a ^ b; // b (a ^ b) ^ b a ^ 0 a a a ^ b; // a (a ^ b) ^ a 0 ^ b b a ^ a 0 a ^ 0 a // 求和方式 a a b; b a - b; // b (a b) - b a a a - b; // a (a b) - a b3. 位运算符的优先级~ 高于 高于 高于 高于 ^ 高于 |二、程序调试方法1. 打印调试程序运行过程中打印输出 printf(num %d\n, num);2. gdb 调试gdb 是 GNU 提供的 Linux 下的代码调试工具。1使用 gdb 调试逻辑错误2使用 gdb 调试段错误。rwhere 定位段错误的位置。1. 编译程序-g 选项允许使用 gdb 调试 gcc main.c -g 2. 使用 gdb 调试程序 gdb ./可执行程序 gdb ./a.out 3. gdb 指令 l 列出源代码 b行号 在指定行打断点 r 运行程序 n 执行下一条代码 p变量名 查看变量值 q 退出 gdb s 跟进函数