Rumah > pembangunan bahagian belakang > Golang > Adakah Terdapat Cara Lebih Pantas untuk Semak sama ada big.Int ialah Zero?

Adakah Terdapat Cara Lebih Pantas untuk Semak sama ada big.Int ialah Zero?

Linda Hamilton
Lepaskan: 2024-11-29 04:38:15
asal
915 orang telah melayarinya

Is There a Faster Way to Check if a big.Int is Zero?

Adakah terdapat cara yang lebih pantas untuk menguji jika besar.Int ialah 0?

Masalah:

Apabila bekerja dengan big.Int, selalunya perlu untuk menguji sama ada nilainya ialah 0. Semasa membandingkan besar.Int kepada besar.Int mewakili 0 (cth., sifar := big.NewInt(0)) berfungsi, adakah terdapat cara yang lebih cepat khusus untuk 0?

Penyelesaian:

Ya, terdapat dua cara untuk menguji 0 yang jauh lebih pantas daripada membandingkan dengan besar lain.Int:

1. Semak Panjang Slice Bits:

big.Int mendedahkan kaedah Bits(), yang mengembalikan sekeping bait yang mewakili perwakilan binari dalaman bagi nilai. Untuk 0, kepingan ini akan kosong (tiada). Oleh itu, anda boleh menyemak sama ada panjang kepingan bit ialah 0:

if len(i1.Bits()) == 0 {
}
Salin selepas log masuk

2. Semak Panjang Bit:

Kaedah BitLen() mengembalikan bilangan bit yang diperlukan untuk mewakili nilai. Untuk 0, panjang bit ialah 0. Oleh itu, anda juga boleh menggunakan ini:

if i1.BitLen() == 0 {
}
Salin selepas log masuk

Keputusan Penanda Aras:

Berbanding dengan pendekatan perbandingan tradisional, kedua-dua kaedah di atas memberikan peningkatan prestasi yang ketara:

BenchmarkCompare-8      76975251            13.3 ns/op
BenchmarkBits-8         1000000000           0.656 ns/op
BenchmarkBitLen-8       1000000000           1.11 ns/op
Salin selepas log masuk

Ujian untuk 1

Walaupun tidak sepantas menguji 0, pendekatan serupa boleh digunakan untuk menguji sama ada besar.Int bersamaan dengan 1: semak sama ada kandungan bit mewakili 1 dan tandanya positif.

Atas ialah kandungan terperinci Adakah Terdapat Cara Lebih Pantas untuk Semak sama ada big.Int ialah Zero?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan