Mari kita sampai ke teras menambah dua integer tanpa menggunakan operator ' '. Ini memerlukan manipulasi binari.
Kami akan mendekati ini seperti penambahan biasa, tetapi menggunakan binari.
Pengendali bitwise XOR (^) mengendalikan jumlah permulaan ini dengan sempurna:
Ini sejajar dengan keperluan kami: 1 1 → 0 (dengan pembawa), 0 1 atau 1 0 → 1 dan 0 0 → 0.
Sekarang, mari kita atasi masalahnya. Pengendali DAN (&) membantu kami mencari mereka:
Untuk mengalihkan pembawa ke kiri, kami akan menggunakan anjakan bit kiri.
sum = a ^ b
(XOR untuk jumlah tanpa bawa)carry = (a & b)
(DAN untuk dibawa)carry == 0
:a = sum
b = carry << 1
(anjakan bit kiri untuk dibawa)sum = 0101 ^ 0011 = 0110
carry = 0101 & 0011 = 0001
sum = 0110 ^ 0010 = 0100
carry = 0110 & 0010 = 0010
sum = 0100 ^ 00100 = 0000
carry = 0100 & 0100 = 0100
sum = 0000 ^ 1000 = 1000
carry = 0000 & 1000 = 0000
Bawaan ialah 0, jadi jumlah akhir ialah 1000 (8).
Integer tanpa sempadan Python menyebabkan masalah dengan nombor negatif. Peralihan bit kiri boleh membawa kepada pertumbuhan yang tidak terhingga. Untuk membetulkannya, kita perlu mensimulasikan integer bersaiz tetap (cth., 32-bit).
Kami akan menggunakan topeng 32-bit (0xFFFFFFFF) untuk mengehadkan bilangan bit:
Ini memastikan bahawa hanya 32 bit terakhir dipertimbangkan, menghalang pertumbuhan yang tidak terhingga. Kami juga mengendalikan hasil negatif yang berpotensi dengan menukarnya kepada perwakilan pelengkap dua 32-bit mereka jika perlu.
Pendekatan ini secara berkesan mensimulasikan aritmetik integer 32-bit dalam Python, menyelesaikan isu dengan integer tidak terhad dan nombor negatif. Keadaan if a > MAX_INT
memastikan bahawa hasilnya kekal dalam julat integer bertanda 32-bit. Contoh dengan -12 dan -8 menunjukkan cara pembetulan ini berfungsi untuk menghasilkan hasil jangkaan -20.
Nama saya Jaimin Bariya, jika anda mendapati sesuatu yang berguna, sila like dan komen, dan ikuti saya di github jaimin-bariya
Atas ialah kandungan terperinci JUMLAH DUA INTEGER - leetcode - Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!