# 오버플로우 없이 2개 unsigned int의 평균 구하기

> Clean Markdown view of GeekNews topic #5946. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=5946](https://news.hada.io/topic?id=5946)
- GeekNews Markdown: [https://news.hada.io/topic/5946.md](https://news.hada.io/topic/5946.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2022-02-10T10:16:42+09:00
- Updated: 2022-02-10T10:16:42+09:00
- Original source: [devblogs.microsoft.com](https://devblogs.microsoft.com/oldnewthing/20220207-00/?p=106223)
- Points: 9
- Comments: 1

## Topic Body

- 더해서 2로 나누는 것은 오버플로우가 발생

ㅤ→ (a + b) / 2

- 둘중에 큰 수를 알면 두 값의 차이를 작은 수에 더해서 2로 나누는 것도 가능

ㅤ→ low + (high - low) / 2

- 어떤게 큰 수인지 몰라도 가능한 알고리듬은 2016년에 특허가 만료됨

ㅤ→ (a / 2) + (b / 2) + (a & b & 1)

- SWAR : SIMD within a register

ㅤ→ (a & b) + (a ^ b) / 2

- 컴파일러가 64비트를 지원한다면 캐스팅

ㅤ→ ((unsigned long long)a + b) / 2

* 그리고 그 다음은 프로세서별 어셈블리 코드들.. 원문을 참고 하세요

## Comments



### Comment 8847

- Author: xguru
- Created: 2022-02-10T10:16:53+09:00
- Points: 2

레이몬드 첸의 블로그 The Old New Thing 은 윈도우 개발 뒷얘기 부터 다양한 주제를 다루고 있습니다.

국내에는 "레이몬드 첸의 윈도우 개발 282 스토리" 라고 번역서가 나왔었지만 현재는 절판입니다.
