阴暗的C/C++宏定义
#define OCB(c) (c&1)|(c&2)<<2|(c&4)<<4|(c&8)<<6|(c&16)<<8|\
(c&32)<<10|(c&64)<<12|(c&128)<<14
这段代码定义了一个名为 OCB 的宏,用于对一个 8 位整数 c 进行位重组操作。它将输入字节的每个位提取出来,然后将它们分别左移到新的位置,最终组合成一个 16 位的值。这种位重组在密码学或数据编码中很常见。
例如,若输入 c 为二进制 0b10101010,则处理后的二进制结果为:
第0位: 0 → 0 第1位: 1 → 1左移2位 → 0b00000100 第2位: 0 → 0 第3位: 1 → 1左移6位 → 0b01000000 第4位: 0 → 0 第5位: 1 → 1左移10位 → 0b010000000000 第6位: 0 → 0 第7位: 1 → 1左移14位 → 0b0100000000000000 ------------------------------------------- 组合后: 0b0101010101010100 (0x5554)
限制幅度值 clamp(钳位)
//初始变量及函数定义 #define _constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt)))
宏定义解析
浙公网安备 33010602011771号