Belang van Bit-manipulatie code?

Ik programmeer de afgelopen 3 jaar en heb niet echt moeite gedaan om code voor bitmanipulatie te schrijven. Nadat ik aan bedrijfssoftware had gewerkt, heb ik ook andere ontwikkelaars het niet zien opschrijven.

Is het een goede gewoonte om een ​​bitmanipulatiecode te schrijven in plaats van de wiskundige bewerkingen te gebruiken voor het uitvoeren van berekeningen?

2

4 antwoord

Meer of minder, als u niet werkt met het soort software dat baat zou hebben bij bitmanipulatie, dan hoeft u ze waarschijnlijk niet te gebruiken. Sterker nog, op veel plaatsen kunnen ze code moeilijker te lezen maken en mogen ze eigenlijk alleen worden gebruikt als er een reden voor is.

Als u echter geïnteresseerd bent, zijn ze een handig hulpmiddel gezien de juiste toepassing. Als u bijvoorbeeld een code hebt die zich vermenigvuldigt met een macht van twee, kan het sneller zijn om gewoon de bits te verplaatsen. Dit kan belangrijk worden als u vaststelt dat de vermenigvuldigingscode een bottleneck is voor de prestaties.

Een belangrijk feit om te beseffen is dat sommige compilers sommige van deze vormen van optimalisatie zullen doen (bijvoorbeeld het draaien van de regel i = i * 2 naar een linkerdienst) voor u.

2
toegevoegd

Dit is afhankelijk van de situatie. Bijvoorbeeld, shift naar rechts en shift naar links zijn over het algemeen sneller dan de dividing operator. Als u optimalisatie nodig hebt en bitbewerkingen sneller zijn dan de andere, moet u bitbewerkingen gebruiken. Maar niet voortijdig optimaliseren. want dat is geen goede zaak om te doen. Als je zeker weet dat je optimalisatie nodig hebt en het gebruik van bit-operators sneller is dan de vorige aanpak, dan zou je ze moeten gebruiken.

1
toegevoegd
Slecht als een algemeen advies. Compilers kennen meestal betere trucjes voor het splitsen/vermenigvuldigen, inclusief het soort waarbij een enkele shift niet werkt.
toegevoegd de auteur Sebastian Mach, de bron
Maar compilers zullen dit over het algemeen voor u doen.
toegevoegd de auteur Dave Newton, de bron

Dit is een enigszins bizzarre vraag! Nee, waarschijnlijk zal bedrijfscode waarschijnlijk geen bitmanipulatie doen. Het is meestal geschreven in Java/.NET enz. Het gaat om het pushen van berichten en het communiceren tussen verschillende systemen op een hoog niveau.

Als u echter stuurprogramma's schrijft met C of C ++ of assembler, of slimme wiskundige bewerkingen op laag niveau uitvoert, is bitmanipulatie waarschijnlijk belangrijker en nuttiger voor u. U zult ongetwijfeld weten wanneer u het moet gebruiken als/wanneer de tijd daar is!

1
toegevoegd

TL; DR: Nee. Gebruik wiskundige operators voor wiskundige bewerkingen.

1
toegevoegd