判断一个无符号整型变量data左起第2位和右起第2位(注:第1位为起始位)任意一位是否为真的十六进制掩码是 0x42。

解释:

  • 0x42 的二进制表示为 0100 0010。
  • 左起第2位和右起第2位分别对应二进制的第2位和第7位。
  • 0x42 的第2位和第7位都为 1,这意味着如果data的对应位为 1,则与 0x42 进行按位与运算的结果将不为 0。

示例代码:

#include <stdio.h>

int main() {
  unsigned int data = 0x1234;
  unsigned int mask = 0x42;

  if ((data & mask) != 0) {
    printf("data 的左起第2位或右起第2位至少有一位为真。\n");
  } else {
    printf("data 的左起第2位和右起第2位都为假。\n");
  }

  return 0;
}

注意:

  • 掩码的第 i 位为 1,表示要判断 data 的第 i 位是否为 1。
  • 掩码的第 i 位为 0,表示不关心 data 的第 i 位是否为 1。
  • 按位与运算符 & 用于判断数据中指定位是否为 1。
C语言判断无符号整型变量指定位是否为真

原文地址: http://www.cveoy.top/t/topic/iWpb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录