2012-06-25 3 views
1

L'opération d'addition (+) est-elle plus complexe que l'opération de comparaison (>), à la fois en nombre entier et en arithmétique en virgule flottante? J'apprécierais la réponse dans le contexte de microprocesseur et de systèmes basés sur FPGA. Je pense que la comparaison et l'addition sont la même chose quand on parle de systèmes basés sur un microprocesseur parce que la comparaison a> b peut être résolue en vérifiant le bit de signe de (a-b), c'est-à-dire une opération d'addition. Mais, dans le contexte des systèmes basés sur FPGA, je suppose que la complexité de l'opérateur de comparaison peut être réduite?Différence entre la comparaison et l'addition

+3

Comment est-ce C++ lié? dans la langue (et pour les types intégraux) ils sont –

+0

Comment définissez-vous la complexité? Sur un FPGA, je suppose que vous parlez de l'utilisation des ressources Sur un microprocesseur, je suppose que vous parlez de cycle de cycle? De toute façon, c'est probablement hors sujet, et devrait être sur http://electronics.stackexchange.com au lieu de –

+0

afin que je puisse avoir un avis ion des développeurs C++ (pour les PC de bureau). Je sais qu'ils ne sont pas très concernés par cette chose, mais je voulais juste savoir comment les choses sont dans les microprocesseurs pour les ordinateurs de bureau. – ubaabd

Répondre

1

La comparaison est un peu "plus simple" pour les entiers, car nous avons seulement besoin de comparer chaque bit de msb à lsb (sans un bit de retenue, qui est nécessaire par addition). En termes de complexité, les deux sont O (log n) bien.

Mais je doute que vous puissiez réellement mesurer cette petite différence en termes d'utilisation des ressources (tranches logiques ou consommation d'énergie).

+0

Donc, ce n'est pas utile si je convertis un algorithme basé sur des ajouts à un algorithme basé sur des comparaisons? – ubaabd

+0

Pourquoi n'avez-vous pas simplement posé votre vraie question comme votre question - sur la façon d'optimiser quelque chose? – tenfour

+0

@tenfour A mon avis, il est toujours préférable de poser la question spécifique sur ces forums au lieu de la mettre en général. Il y aura beaucoup de réponses à 'Comment optimiser?' alors que la seule chose que je voulais savoir si 'un ajout plus complexe que la comparaison' dans les systèmes actuels. – ubaabd

1

En théorie, la comparaison pourrait être plus rapide, il suffit de comparer chaque bit et cela peut être fait en parallèle. Cette comparaison se fait en deux étapes, une qui compare tous les bits, et une seconde qui vérifie si un bit est activé. (C'est techniquement (a0^b0) | (a1^b1) | ... (an^bn) Tout le ai^bi peut être fait en même temps Cela devrait être O (log (n))

Cependant, pour l'ajout, vous avez besoin de propager le report de chaque bit à l'autre si vous vous retrouvez dans O (n).