Ich testen BigIntegers.Arbeiten mit BigIntegers in C#
Wenn ich eine große ungerade Zahl nehme und sie durch 2 dividiere, bekomme ich eine ganze Zahl als Antwort, ohne irgendeinen Hinweis, dass sie die Zahl nicht genau teilen könnte.
Also erste Frage ist, woher weiß ich, dass zwei Zahlen genau teilen.
Getestet habe ich es dann mit einer kleinen Zahl, einen diesen Code:
string myNumberAsString = "25";
System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding();
byte[] myNumberAsByteArray = encoding.GetBytes(myNumberAsString);
BigInteger myNumber = new BigInteger(myNumberAsByteArray);
Console.WriteLine(myNumber/2);
das Ergebnis Gibt 6809. Jeder weiß, warum oder sehen kann, was mit meinem Code falsch?
Ich bin mit der .net 4.0 Implementierung von BigInteger
Ich glaube nicht, dass die Codierung zu UTF8 Ihnen ein Byte-Array gibt, das die Zahl 25 darstellt? – flq
6809 in hex ist 0x1A99, was genau die Hälfte von 0x3532 ist. Die ASCII-Codes (UTF-8 verwendet ASCII-Codes für Zeichen im ASCII-Bereich) für die Zeichen in Ihrer Zeichenfolge sind 0x32 und 0x35, die aufgrund der Little-Endian-Byte-Reihenfolge 0x3532 werden. Ihre "große Ganzzahl" ist also nicht ungerade und die Division gibt Ihnen das richtige Ergebnis. –