Meine Aufgabe besteht darin, die Binärdarstellung einer Zahl zu durchsuchen und ein übereinstimmendes Muster einer anderen Binärdarstellung einer Zahl zu ersetzen. Wenn ich eine Übereinstimmung erhalte, wandle ich die übereinstimmenden Bits von der ersten Ganzzahl in Nullen um und gehe weiter. Zum Beispiel wäre die Nummer 469 111010101
und ich muss es mit 5 (101
) übereinstimmen. Hier ist das Programm, das ich bisher geschrieben habe. Funktioniert nicht wie erwartet.Passen Sie eine Bitfolge in einer Zahl an und konvertieren Sie dann die Übereinstimmung in Nullen?
using System;
namespace Conductors
{
class Program
{
static void Main(string[] args)
{
//this is the number I'm searching for a match in
int binaryTicket = 469;
//This is the pattern I'm trying to match (101)
int binaryPerforator = 5;
string binaryTicket01 = Convert.ToString(binaryTicket, 2);
bool match = true;
//in a 32 bit integer, position 29 is the last one I would
//search in, since I'm searching for the next 3
for (int pos = 0; pos < 29; pos++)
{
for (int j = 0; j <= 3; j++)
{
var posInBinaryTicket = pos + j;
var posInPerforator = j;
int bitInBinaryTicket = (binaryTicket & (1 << posInBinaryTicket)) >> posInBinaryTicket;
int bitInPerforator = (binaryPerforator & (1 << posInPerforator)) >> posInPerforator;
if (bitInBinaryTicket != bitInPerforator)
{
match = false;
break;
}
else
{
//what would be the proper bitwise operator here?
bitInBinaryTicket = 0;
}
}
Console.WriteLine(binaryTicket01);
}
}
}
}
Ich würde vorschlagen, dass dies auf http://codereview.stackexchange.com/ anstelle von SO gepostet wird. Kompletter Code, der nicht wie erwartet funktioniert, wird dort besser überprüft. – Mikanikal
@Mikanikal CodeReview ist für vollständigen Code, der * funktioniert *, benötigt aber Feedback für bessere/sauberere Lösungen. Es wäre geschlossen, wenn OP es auf codereview gepostet hätte. SO ist die richtige Seite für diese Frage. Es ist jedoch derzeit unklar, wie "nicht funktioniert wie erwartet" eine Million verschiedene Dinge bedeuten kann. – Rob
@Rob Das war meine Absicht, wenn es nicht so (so) klingen würde. Code, der funktioniert, aber nicht wie erwartet, was bedeutet, dass er eine bessere Lösung benötigt. Mit einer klareren Frage aus dem OP werde ich also meinen Kommentar zurückziehen. – Mikanikal