Standardvorgehensweise, ein Bit auf 0 zu setzen
-
Hallo,
ich wollte eine Funktion schreiben, die ein bestimmtes Bit eines unsigned int auf 0 setzt. Im Moment habe ich diese Version:void unset(unsigned int position) { zahl &= ( (~0u) ^ ( 1u << position ) ); }zahl ist in dem Falle auch ein unsigned int. Die Funktion verundet also die zahl mit einem unsigned int, in dem alle bits auf 1 gesetzt sind, außer das an "position". Aber irgendwie kommt mir dieser Weg so umständich vor.
Gibt es eine andere - vll sogar gewöhnliche - Vorgehensweise, dieses Problem zu lösen?
-
Ein wenig kann ich schonmal rausmachen.
void unset(unsigned int position) { zahl &= ~( 1u << position ); }
-
Malcolm85 schrieb:
. Aber irgendwie kommt mir dieser Weg so umständich vor.
Gibt es eine andere - vll sogar gewöhnliche - Vorgehensweise, dieses Problem zu lösen?Übersetzt sind das ca. 2 Maschinenbefehle. Ich glaube nicht, dass das noch besser geht.