Dalam soalan ini, kita diberi dua nombor. Tugas kami adalah untuk mencipta program C untuk penambahan rekursif bit bagi dua integer.
Logik penjumlahan menggunakan operasi bitwise adalah serupa dengan apa yang kami lakukan di prasekolah. Untuk menjumlahkan, kami biasanya menambah setiap digit nombor, dan jika pembawa hadir, kami menambahnya pada nombor seterusnya.
Kami akan melakukan sesuatu yang serupa, menggunakan operator XOR untuk menjumlahkan dan operator AND untuk menyemak untuk dibawa. Jika ada carry, kami tambah semula ke nombor, jika tidak.
Ini adalah logik separuh penambah yang mungkin anda pelajari dalam elektronik digital. Lihat di sini...
Sekarang jumlah dikira menggunakan a^b iaitu XOR b, jika bit pertama kedua-duanya ditetapkan kita perlu menyemak sama ada bawaan tambahan perlu disebarkan. Kita perlu menambah bit tetapan tambahan pada nombor itu.
Jadi aritmetik bitwise akan menjadi
Langkah 1 - Cari XOR bagi a dan b iaitu a^b dan simpan dalam pembolehubah hasil.
Langkah 2 - Semak sama ada {(a & b)
Langkah 2.1 - Jika sama dengan 0, cetak hasilnya, yang merupakan keputusan akhir.
Langkah 2.2 - Jika tidak sama dengan 0 sama dengan 0, kemudian pergi ke langkah 1 di mana a = {(a & b)
Algoritma prosedur yang menggambarkan cara fungsi ini berfungsi -
Demonstrasi langsung
#include <stdio.h> int addNumbers(int a, int b) { int carry = (a & b) << 1; int result = a^b; if (carry == 0) return result; else addNumbers(carry, result); } int main(){ int a = 54, b = 897; printf("The sum of %d and %d using bitwise adding is %d", a, b, addNumbers(a, b)); return 0; }
The sum of 54 and 897 using bitwise adding is 951’
Atas ialah kandungan terperinci Penambahan rekursif bit bagi dua integer dalam C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!