Penambahan rekursif bit bagi dua integer dalam C

WBOY
Lepaskan: 2023-09-05 21:17:03
ke hadapan
1248 orang telah melayarinya

Penambahan rekursif bit bagi dua integer dalam C

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)

Contoh

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;
}
Salin selepas log masuk

Output

The sum of 54 and 897 using bitwise adding is 951&rsquo;
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan