#include <stdint.h>

typedef uint32_t u32;
typedef uint64_t u64;

u32 average_overflow(u32 low, u32 high)
{
return (low + high) / 2;
}

u32 average_halfrange(u32 low, u32 high)
{
return low + (high - low) / 2;
}

u32 average_lastbit(u32 a, u32 b)
{
return (a / 2) + (b / 2) + (a & b & 1);
}

u32 average_swar(u32 a, u32 b)
{
return (a & b) + (a ^ b) / 2;
}

u32 average_extend(u32 a, u32 b)
{
return ((u64)a + b) / 2;
}

https://devblogs.microsoft.com/oldnewthing/20220207-00/?p=106223

여기서 가져와봄


물론 PS에서는 두번째 빼고는 사용할 일 없겠지만

3 4 5번은 대소관계 몰라도 사용할 수 있음