在计算中点时看到一个把坐标点x, y分量相加再左移16位的神奇操作~
来自LeetCode 963. Minimum Area Rectangle II
auto center = ((size_t)(x1 + y1) << 16) + x2 + y2;
我对这里的理解是, 作者清楚每一个坐标分量都不会用超过16个位去存储, 所以将其中一个坐标分量相加以后左移16位放至高位, 而低位16位则用来放置另外一个坐标的分量和, 从而达到将两个坐标点压缩为一个整数的效果, 有点类似构造了一个哈希函数.
在计算中点时看到一个把坐标点x, y分量相加再左移16位的神奇操作~
来自LeetCode 963. Minimum Area Rectangle II
auto center = ((size_t)(x1 + y1) << 16) + x2 + y2;
我对这里的理解是, 作者清楚每一个坐标分量都不会用超过16个位去存储, 所以将其中一个坐标分量相加以后左移16位放至高位, 而低位16位则用来放置另外一个坐标的分量和, 从而达到将两个坐标点压缩为一个整数的效果, 有点类似构造了一个哈希函数.