Tahukah Anda bahwa sejumlah kecil dapat meminjam bit dari jumlah yang lebih besar? Ini sebuah contoh. Katakanlah dua angka 5 dan 14. Pertama, tuliskan dalam biner:
5 14
000101 001110
Pertama kita mengambil terkecil di agak jauh dari jumlah yang lebih besar, dan kami memberikannya kepada yang terkecil off sedikit di nomor lain. Begitu
This bit turns off
|
v
000101 001110
^
|
This bit turns on
Sekarang kita punya
000111 001100
dan nomor kami adalah 7 dan 12. Angka pertama masih lebih kecil, jadi kami melanjutkan.
000111 001100
001111 001000
Sekarang kita punya 15 dan 8, jadi kita bisa berhenti. Kami akan menyebut rangkaian operasi ini "peminjaman bit" dua angka. Mari kita lakukan contoh lain. 20 dan 61.
20 61
010100 111101
010101 111100
010111 111000
111111 100000
63 32
Jadi hasil akhir kami adalah 32, 63. Mari kita lakukan satu lagi. 31, dan 12. 31 sudah lebih besar dari 12, jadi tidak ada yang bisa dilakukan! Pinjam bit 31 dan 12 memberi 31 dan 12, tanpa perubahan.
Tantangan
Tantangan Anda adalah menulis sebuah program atau fungsi yang mengambil dua angka dan meminjamnya sedikit. Dua angka akan selalu bilangan bulat positif. Input dan output Anda dapat dalam format apa pun yang masuk akal.
Tes IO:
Input: 2, 3
Output: 3, 2
Input: 3, 2
Output: 3, 2
Input: 8, 23
Output: 31, 0
Input: 42, 81
Output: 63, 0
Input: 38, 41
Output: 47, 32
Input: 16, 73
Output: 23, 0
Input: 17, 17
Output: 17, 17
Celah standar berlaku, dan jawaban tersingkat dalam byte menang!