![]() |
[C] Hilfe bei Bitshifting Operatoren
Hallo,
mein Problem ist folgendens. Ich bin totaler Programmier Anfänger und brauche Hilfe. Die Aufgabenstellung sieht so aus das ich ein Programm schreiben soll das die Binärpräsentation eines Integers ausgeben soll. Die einzelnen Bytes sollen mit "|" getrennt werden und der Integer soll vorher eingelesen werden. Bitte um rasche Lösungsvorschläge Schon mal danke im voraus |
also das hier funktioniert, allerdings wird nicht abgefangen ob auch wirklich ein int eingelesen wurde. versuch aber bitte zu verstehen was da passiert.
Code:
// ein int belegt sizeof(int) bytes. |
Thx
Danke für die rasche Antwort, aber viel schlauer bin ich noch nicht geworden.
Hab mal das von dir gepostete kompiliert hat aber nur fehlermeldungen rausgespuckt. So ganz hab ich auch noch nicht verstanden was bei dir the_int & pattern macht. Wo werden die Bits dahin geschoben dass sie das integer als Binärezahl darstellen? Danke für ne rasche anwort :D |
1) das was ich gepostet habe ist kein komplettes c-programm
da gehört noch mind: Code:
#include <stdio.h> 2) probier das mal, und poste dann die fehler. 3) unter welchen os programmierst du? und mit welchem compiler ? z.b. gcc unter linux ... 4) the_int & pattern: am beispiel anhand von 4 bits: sei the_int = 5 = [0,1,0,1] und pattern zum anfang [1,0,0,0] [0,1,0,1] & [1,0,0,0] = 0 dann jeweils pattern = pattern >> 1; [0,1,0,1] & [0,1,0,0] = 1 [0,1,0,1] & [0,0,1,0] = 0 [0,1,0,1] & [0,0,0,1] = 1 das if (the_int & pattern) wird wahr wenn im ergebnis von the_int & pattern auch nur ein bit auf 1 steht. also wenn a = b & c; und a,b,c sind vom typ int. dann ergibt sich das ergebnis c aus der bitweisen UND-vernüpfung von b und c. also [aN, .. a1, a0] = [bN AND cN, ...., b1 AND c1, b0 AND c0] |
bytes trennen durch |
Hab ne andere Variante um von Dezimal auf binär umzurechnen. Mein Problem is aber, dass ich nicht weiss wie ich alle bytes mit | voneinander trennen soll. Habs mit ner for schleife probiert klappt aber milde gesagt nicht so ganz. Ich hoffe du kannst mir helfen...
#include <stdio.h> int main() { unsigned int value,i; unsigned int bin[32]; printf("Please enter an integer:"); scanf("%d",&value); int j; for(i=0;i<32;i++) { bin[i]=((value>>i)&1); } for(i=0;i<32;i++) { for (j=8;j<32;j++) { if ( j <= (j+8)) { printf ("|"); } } printf("%d",bin[31-i]); } printf("\n"); return 0; } |
ach die bytes sollen getrennt werden.
ok. Code:
for (i = 0; i < 32; i++) { |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.