Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengira Logaritma Asas 2 dalam C/C tanpa Fungsi Terbina dalam?

Bagaimana untuk Mengira Logaritma Asas 2 dalam C/C tanpa Fungsi Terbina dalam?

Barbara Streisand
Barbara Streisandasal
2024-10-27 08:13:03443semak imbas

How to Calculate Logarithm Base 2 in C/C   without a Built-in Function?

Cara Mengira Logaritma Asas 2 dalam C/C Menggunakan Penukaran Matematik

Dalam C/C , fungsi logaritma terbina dalam adalah log (), yang mengira logaritma asli (asas e), dan log10(), yang mengira logaritma asas 10. Walau bagaimanapun, kadangkala anda mungkin perlu mengira logaritma asas 2 dan mereka tidak menawarkan fungsi ini secara langsung.

Untuk mengira logaritma asas 2 menggunakan matematik mudah, anda boleh menukarnya kepada asas lain dan kemudian menggunakan fungsi log sedia ada. Persamaan untuk penukaran ini ialah:

log<sub>2</sub> (x) = log<sub>y</sub> (x) / log<sub>y</sub> (2)

di mana y boleh menjadi sebarang asas. Biasanya, y adalah sama ada 10 atau e, bergantung pada fungsi log yang tersedia dalam bahasa pengaturcaraan anda.

Dalam C/C , anda boleh menggunakan fungsi log() untuk mengira asas logaritma e dan log10() kepada hitung asas logaritma 10. Jadi, untuk mengira asas logaritma 2, anda boleh menggunakan kod berikut:

<code class="c">#include <iostream>
#include <cmath>

double log2(double x) {
  return log10(x) / log10(2);
}

int main() {
  double number;
  std::cout << "Enter a number: ";
  std::cin >> number;

  std::cout << "log2(" << number << ") = " << log2(number) << std::endl;

  return 0;
}</code>

Kod ini mengambil nombor input, mengira asas log 10 dan membahagikannya dengan asas log 2. Hasilnya ialah logaritma asas 2 nombor input.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Logaritma Asas 2 dalam C/C tanpa Fungsi Terbina dalam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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