Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengira Siling Bahagian Integer dalam C/C tanpa Operasi Darab atau Titik Terapung?

Bagaimana untuk Mengira Siling Bahagian Integer dalam C/C tanpa Operasi Darab atau Titik Terapung?

Susan Sarandon
Susan Sarandonasal
2024-11-22 08:48:141013semak imbas

How to Calculate the Ceiling of Integer Division in C/C   without Multiplication or Floating-Point Operations?

Siling Pembahagian Integer tanpa Pendaraban atau Tuangan Titik Terapung

Dalam C dan C , pembahagian integer (x/y) mengembalikan lantai daripada hasilnya. Untuk mengira siling sebaliknya, mengelakkan tuangan titik terapung dan pendaraban tambahan, pertimbangkan kaedah berikut:

1. Menggunakan (x y - 1) / y:

unsigned int x, y, q;
// Round up
q = (x + y - 1) / y;

Formula ini memastikan siling dikira, kerana ia menambah 1 sebelum melakukan pembahagian.

2. Mengelakkan Limpahan dalam (x y):

Untuk mengelakkan limpahan integer apabila menambah x dan y, kaedah alternatif ialah:

q = 1 + ((x - 1) / y); // if x != 0

Rumusan ini secara berkesan menambah siling sebanyak 1, kecuali apabila x ialah 0, di mana ia kekal 0.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Siling Bahagian Integer dalam C/C tanpa Operasi Darab atau Titik Terapung?. 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