Problem Int in Binär Programm
-
Hallo ich aus dem Studium eine Übungsaufgabe in dem ich eine Intzahl, in einer Binär zahl umwandeln soll. So weit so gut, ich dachte soweit müsste das egtl klappen nur ist dem leider nicht so, ich habe das Problem das ich nur Smilies heruasbekomme und weis nicht woran das liegt, ich sitze jetzt schon Stunden hier und finde keine Antwort. Deshalb wend ich mich jetzt an euch mit der Hoffnung das ihr mir helfen könnt.
Das Hauptprogramm ist Vorgabe in den Übungs/Praktikums unterlagen.
#include<stdio.h> void main() { char binzahl[132]; int intzahl; void int2bin(char *binzahl,int intzahl); scanf("%d",&intzahl); int2bin(binzahl,intzahl); printf("dezimal:%d, binaer:%s\n",intzahl,binzahl); } void int2bin(char *binzahl,int intzahl) { int bin[132]; int k,m; for(k=0;intzahl>0;++k) { bin[k]=(intzahl%2); intzahl=intzahl/2; } for(m=0;k-1>=0;++m,k=k-1) { binzahl[m]=bin[k-1]; } binzahl[m]=0; }
Die Ausgabe bei 7 sieht und 8 sehen so aus
dezimal: 7 binär: :):):) und dezimal: 8 binär :)
-
Also ich würde das viel einfacher machen...
#include <stdio.h> int main() { int a = 8; for(int i=0; i < sizeof(int) * 8; ++i){ printf("%d", (a & 0x80000000) >> 0x1F); a <<= 1; } return 0; }
-
Hehe mag sein,aber erstmal danke, leider hab ich vergessen zu erwähnen das ich das ich das mit de Dividieren durch 2 und den Rest Multiplizieren mit 2 lösen soll. Sorry hätte ich erwähnen sollen.
Also so in der art:
Dezimal: 9 => Binär: x 9/2 = 4,5 2^0 Binärzahlstelle= 0,5*2 = 1 4/2 = 2 2^1 B... = 0 * 2 = 0 2/2 = 1 2^2 B... = 0 * 2 = 0 1/2 = 0,5 2^3 B... = 0,5 * 2 = 1 Bin = 1001
ich hoffe das ist soweit verständlich
-
Hmm.. dann wohl lieber so in der Art:
#include <iostream> #include <string> std::string int2bin(int n) { std::string str; do{ char c[5]; itoa(n % 2, c, 10); str = c + str; n = n / 2; }while(n != 0); return str; } int main() { std::cout << int2bin(8) << std::endl; return 0; }
Hab das jetzt in C++ geschrieben, aber wenn du's in C brauchst solltest du das ja ganz leicht abändern können.
-
for(m=0;k-1>=0;++m,k=k-1) { binzahl[m]=bin[k-1]+'0'; }
-
Vielen dank erstmal an euch beide, so in etwas wie cccccc habe ich mir das vorgestellt, jetzt müsste ich nur noch wiesen warum es mit +'0' funktioniert und ohne nicht. Könnt mir das vielleicht jmd. erklären?
-
Wieso nicht vieeeeeeeeeeeeeel einfacher:
#include <bitset> #include <iostream> int main(int argc, char*argv[]){ std::cout << "Zahleingeben: " << std::endl; int Zahl; std::in >> Zahl; std::cout << "In binär: " << std::bitset<32>(Zahl).to_string() << std::endl; }