Mari kita lihat algoritma dalam pertanyaan:
[(a + b) + abs(b - a)]/2
Ini memiliki tahap penambahan dan pengurangan yang kemudian diumpankan ke penambahan tahap kedua. Membagi dengan 2 adalah sepele dalam perangkat keras, dapat dilakukan dengan menghapus LSB. Namun full-adder / subtractor dua-tahap cukup lambat dan intensif di gerbang, terutama jika Anda menggunakan beberapa caparison seperti Anda.
Membangun dari jawaban Wouter van Ooijen, struktur umum adalah komparator digital yang memberi makan sinyal pilih dari mux:

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
Skema di atas adalah untuk:
(A > B) ? A : B
tetapi perhatikan bahwa itu dapat dengan mudah dikonfigurasi ulang untuk perbandingan antara dua input dengan membuat koneksi logis yang berbeda antara output komparator dan mux select.
Jadi jika kita tahu bagaimana merumuskan tiga output dari komparator, kita dapat mengimplementasikan perbandingan apa pun pada perangkat keras. Logika pembanding dijelaskan dengan baik di sini . Untuk mengoptimalkan perangkat keras, kami hanya akan menghapus logika mengemudi keluaran komparator yang tidak digunakan.
Tetapi pada akhirnya, jika itu ke perangkat keras, itu harus melalui sintesis. Jadi Anda tidak boleh terobsesi dengan skema level gerbang mana yang optimal. Sebaliknya, optimalkan kode dan algoritme Anda sehingga Anda setidaknya tidak memaksa synthesizer untuk menghasilkan hasil yang tidak efisien. "Dengan beberapa trik cerdas, pengecekan pasangan bit dapat dikombinasikan dengan muxer untuk pasangan bit yang sama," dan cara termudah untuk melakukan optimasi ini adalah dengan sintesis.