左移16位的妙用

在计算中点时看到一个把坐标点x, y分量相加再左移16位的神奇操作~

来自LeetCode 963. Minimum Area Rectangle II

auto center = ((size_t)(x1 + y1) << 16) + x2 + y2;

我对这里的理解是, 作者清楚每一个坐标分量都不会用超过16个位去存储, 所以将其中一个坐标分量相加以后左移16位放至高位, 而低位16位则用来放置另外一个坐标的分量和, 从而达到将两个坐标点压缩为一个整数的效果, 有点类似构造了一个哈希函数.

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注