32 << (^uint(0) >> 63)
uint(0) 的二进制为 0
^uint(0) 的二进制为 64个1 或32个1,因int, uint根据机器位数决定
^uint(0) >> 63 的二进制为 1 (64位机器),为0(32位机器)
32 << (^uint(0) >> 63) 等价于
32 << 1 或 32 << 0 结果即64 或 32
32 << (^uint(0) >> 63) 检查机器位数
于 2022-11-21 12:35:07 首次发布
32 << (^uint(0) >> 63)
uint(0) 的二进制为 0
^uint(0) 的二进制为 64个1 或32个1,因int, uint根据机器位数决定
^uint(0) >> 63 的二进制为 1 (64位机器),为0(32位机器)
32 << (^uint(0) >> 63) 等价于
32 << 1 或 32 << 0 结果即64 或 32