iver89 Skrevet 23. februar 2005 Del Skrevet 23. februar 2005 Noen som vet hvordan kan jeg enklest mulig kan konvertere et desimaltall til et 8 bits binærtall i C? Takk Lenke til kommentar
Dead_Rabbit Skrevet 23. februar 2005 Del Skrevet 23. februar 2005 Mener å huske at det står noe om det på http://www.cprogramming.com Lenke til kommentar
Feynman Skrevet 23. februar 2005 Del Skrevet 23. februar 2005 Tja, hva er du ute etter? Trenger å vite et par ting: - Hva er inputen: float, double, char* fra stdio? - Hva mener du med 8 bits binærtall? Du kan lagre tallet som et heltall (int) å skrive det ut som binær. Eller du kan lagre tallet som char, som vanligvis tar 8 bit i minnet. Lenke til kommentar
saboi Skrevet 23. februar 2005 Del Skrevet 23. februar 2005 (endret) du deler bare tallet på 2 og tar resten til du er på 0 eksempel: 14 = 1110 14 / 2 = 7 rest 0 7 / 2 = 3 rest 1 3 / 2 = 1 rest 1 1 / 2 = 0 rest 1 når du vet det er det ganske trivielt å implementere det du har bruk for Endret 23. februar 2005 av saboi Lenke til kommentar
Oldie Skrevet 23. februar 2005 Del Skrevet 23. februar 2005 Bruk kalkulatoren i Windows, for eksempel. Skift ført over til "Vitenskapelig" fra "Vis"-menyen... Lenke til kommentar
iver89 Skrevet 23. februar 2005 Forfatter Del Skrevet 23. februar 2005 Tja, hva er du ute etter? Trenger å vite et par ting:- Hva er inputen: float, double, char* fra stdio? - Hva mener du med 8 bits binærtall? Du kan lagre tallet som et heltall (int) å skrive det ut som binær. Eller du kan lagre tallet som char, som vanligvis tar 8 bit i minnet. uhm...tja er veldig ny i C, eller programmering generelt, så det du spør om aner jeg ikke svaret på . 8 bits binærtall; er ikke det feks 10010110? altså 8 siffer? mulig jeg er helt på jordet her og. Lenke til kommentar
Feynman Skrevet 23. februar 2005 Del Skrevet 23. februar 2005 er veldig ny i C, eller programmering generelt, så det du spør om aner jeg ikke svaret på . 8 bits binærtall; er ikke det feks 10010110? altså 8 siffer? mulig jeg er helt på jordet her og. Jo, men det er ikke sikkert du trenger å konverterer noe. Alle data er lagret i binærformat, så det er jo bare å representere dem som binære tall. Et heltall kan skrives som tall eller hex verdi med printf(). Binærtall går ikke an (etter hva jeg har sett). Lenke til kommentar
JBlack Skrevet 23. februar 2005 Del Skrevet 23. februar 2005 Eksempel som konverterer uten bruk av / eller %. #include <stdio.h> typedef char binstring[9]; void uc2bin1(unsigned char tall,binstring s){ int i; for (i=128;i>0;i>>=1) *s++=((tall&i)!=0)+'0'; *s=0; } int main(){ unsigned char tall=154; binstring b; uc2bin1(tall,b); printf("%i : %s\n",tall,b); return 0; } Logikken: Utfører logisk and med 10000000, 01000000, 00100000 osv. Hvis den logiske operasjonen resulterer i et tall != 0 så legges '1' i strengen. Hvis ikke '0'. Etter hver operasjon så flyttes pekeren som peker på hvor i strengen vi er. +'0' utnytter det faktum at '1' følger etter '0' i ASCII alfabatet. Lenke til kommentar
JBlack Skrevet 23. februar 2005 Del Skrevet 23. februar 2005 (endret) void uc2bin2(unsigned char tall,binstring s){ int i=8; for (s[i]=0;i-->0;tall>>=1) s[i]=(tall&1)+'0'; } Liten forbedring, færre operasjoner. Edit: uc2bin1 og uc2bin2 bygger opp strengen i forskjellig retning. 1 fra venstre mot høyre, og 2 fra høyre mot venstre. Logikken fra 1 kan derfor brukes til direkte utskrift. Endret 23. februar 2005 av JBlack Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå