Maison  >  Article  >  développement back-end  >  Comment calculer le plafond de division entière en C/C sans multiplication ni opérations à virgule flottante ?

Comment calculer le plafond de division entière en C/C sans multiplication ni opérations à virgule flottante ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-22 08:48:14920parcourir

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

Plafond de division entière sans multiplication ni conversion en virgule flottante

En C et C, la division entière (x/y) renvoie la parole du résultat. Pour calculer le plafond à la place, en évitant les conversions en virgule flottante et les multiplications supplémentaires, envisagez les méthodes suivantes :

1. Utilisation de (x y - 1) / y :

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

Cette formule garantit que le plafond est calculé, car elle ajoute 1 avant d'effectuer la division.

2. Éviter le débordement dans (x y) :

Pour éviter un débordement d'entier lors de l'ajout de x et y, une méthode alternative est :

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

Cette formulation incrémente effectivement le plafond de 1, sauf quand x vaut 0, où il reste 0.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn