2026/4/16 18:47:49
网站建设
项目流程
成都移动端网站建设,怎么设计手机网站,中国中国建设银行网站,龙岗商城网站建设提取字节中的某一位#xff0c;num为要提取的字节#xff0c;n为要提取字节中的第n位#xff0c;返回置位第n位的值
// 提取 uint8_t 数值的第 n 位#xff08;索引从 0 开始#xff0c;最低位为0#xff09;
unsigned char get_bit(unsigned char num, unsigned char n…提取字节中的某一位num为要提取的字节n为要提取字节中的第n位返回置位第n位的值// 提取 uint8_t 数值的第 n 位索引从 0 开始最低位为0 unsigned char get_bit(unsigned char num, unsigned char n) { // 1. 输入验证确保 n 在 0~7 范围内 if (n 7) return 0xFF; // 错误处理根据需求调整 // 2. 位操作右移 n 位后与 1 按位与提取目标位的值 return (num n) 0x01; }写入某一位到字节中num为要写入的字节position为要写入的第n位value为要写入位的值0或1// 设置指定位的函数 unsigned char setBit(unsigned char num, unsigned char pos, unsigned char val) { // 确保 pos在 0~7 范围内 if (pos 7) return num; //将num的第pos位清零其他位保持不变 num ~(1 pos); // 根据val的值非0则10则0左移pos位然后与num进行或运算从而将第pos位设置为val的值。 //这里利用了(val ! 0)得到一个布尔值0或1然后左移pos位这样就在第pos位上放置了0或1。 num | ((val ! 0) pos); return num; }