Check Parity of a Number
Manchmal kann es für ein Problem relevant sein, ob eine Zahl (un-)gerade ist. Dies lässt sich sehr einfach durch Verwendung der ganzzahligen Division mit Rest (Modulo) bewerkstelligen – wir dividieren dabei einfach durch 2.
Eine Erweiterungsmethode für den Typ
Eine Erweiterungsmethode für den Typ
int
in C# könnte beispielsweise wie folgt aussehen:
int.IsEven implementieren und verwenden (Modulo)
Im Stellenwertsystem zur Basis 2 (Dualsystem) kann man sich zu Nutze machen, dass bei ungeraden Zahlen die letzte Ziffer mit der Wertigkeit 1 gesetzt sein muss, da ansonsten die Zahl in jedem Fall gerade wäre. Übertragen auf die Arbeit im Binärsystem soll also das letzte Bit [nicht] gesetzt sein, was wir durch eine bitweise Verknüpfung ermitteln und dadurch eine entsprechende Optimierung ermöglichen:
0102030405
public static bool IsEven(this int number) { return ((number % 2) == 0);}
bool isEven = (7).IsEven(); // false
int.IsEven implementieren und verwenden (Bitarithmetik)
Entsprechende 0102030405
public static bool IsEven(this int number) { return ((number & 1) == 0);}
bool isEven = (7).IsEven(); // false
IsOdd()
-Methoden können ggf. analog dazu implementiert werden.
Holger
am 10/12/2014 um 6:08 PM Uhr
in Theorie
C# · Informatik · Logik · Mathematik · Softwareentwicklung · Theorie
C# · Informatik · Logik · Mathematik · Softwareentwicklung · Theorie
Project links
-
BitStadt – Stadtportal
Berlin · Hamburg · Amsterdam -
CCC – Fahrplan
Schedules for the CCCongress
Categories / Archive | Übersicht
- PHP functions in C# (136)
- Dictionary (257)
Tags
.NET · ADO.NET · Work · ASP.NET MVC · Blog · C# · Generics · Society · Computer Science · Java · LINQ · Logic · Mathematics · Network · PHP · Project · Security · Software development · Studies · Technics · Theory · Web design · WPF