9 điểm bởi xguru 2022-02-10 | 1 bình luận | Chia sẻ qua WhatsApp
  • Cộng rồi chia cho 2 sẽ gây ra tràn số

→ (a + b) / 2

  • Nếu biết số nào lớn hơn trong hai số, cũng có thể lấy hiệu của hai giá trị cộng vào số nhỏ hơn rồi chia cho 2

→ low + (high - low) / 2

  • Một thuật toán vẫn dùng được ngay cả khi không biết số nào lớn hơn đã hết hạn bằng sáng chế vào năm 2016

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

  • SWAR: SIMD within a register

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

  • Nếu trình biên dịch hỗ trợ 64-bit thì có thể ép kiểu

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

  • Và sau đó là mã assembly theo từng bộ xử lý... hãy tham khảo bài gốc

1 bình luận

 
xguru 2022-02-10

Blog The Old New Thing của Raymond Chen đề cập đến nhiều chủ đề, từ những câu chuyện hậu trường phát triển Windows đến các chủ đề đa dạng khác.

Ở Hàn Quốc từng có bản dịch xuất bản với tên "282 câu chuyện phát triển Windows của Raymond Chen", nhưng hiện nay đã ngừng phát hành.