#define _CRT_SECURE_NO_WARNINGS 1#include stdiohint mainvoid unsigned int original = 0xABC;定义了一个无符号整数变量original并将其赋值为0xABC即十六进制的ABC。 0xABC = 12 × 16^2 + 11 × 16^1 + 10 × 16^0=3258 10进制 unsigned int
这段代码的目的是将一个无符号整数变量original中的每4位进行颠倒,并存储到另一个无符号整数变量result中。
变量变化如下:
-
original = 0xABC result = 0 mask = 0xF
-
第一次迭代: 执行 result |= original & mask,将original的低4位存储到result中 original >>= 4,将original右移4位,将下一个4位移到最低位 result <<= 4,将result左移4位,为存储下一个4位做准备 执行 result |= original & mask,将新的低4位存储到result中 此时,original = 0xAB,result = 0xBCA
-
第二次迭代: 执行 result |= original & mask,将original的低4位存储到result中 original >>= 4,将original右移4位,将下一个4位移到最低位 result <<= 4,将result左移4位,为存储下一个4位做准备 执行 result |= original & mask,将新的低4位存储到result中 此时,original = 0xA,result = 0xBCAA
-
第三次迭代: 执行 result |= original & mask,将original的低4位存储到result中 original >>= 4,将original右移4位,将下一个4位移到最低位 result <<= 4,将result左移4位,为存储下一个4位做准备 执行 result |= original & mask,将新的低4位存储到result中 此时,original = 0x0,result = 0xBCAA0
最后,打印出result的十六进制表示为BCAA0
原文地址: https://www.cveoy.top/t/topic/hJSU 著作权归作者所有。请勿转载和采集!