Gå til innhold

Konvertere BINÆR / DESIMAL


Anbefalte innlegg

Videoannonse
Annonse
Jeg trenger å konvertere desimal til binær. Problemet oppstår i at jeg ikke får den til å forstå komma. F.eks 9,5 skal konverteres til binær. Hvordan gjør jeg dette?

6808033[/snapback]

 

9.5 kan ikke konverteres til binær. Men den kan konverteres til en haug andre forskjellige typer (float, decimal, double,+++,etc) som kan lagres av maskinen binært.

http://docs.sun.com/source/806-3568/ncg_goldberg.html

Lenke til kommentar

Jeg ville si meg uenig der. Det er fult mulig og converte 9.5 til Binary Siden hvis man kan kovertere binær stykker med komma til decimal skal det være mulig og gjøre det samme med decimal til binær. Men jeg husker ikke den formelen Si ifra hvis noen kommer på den. Men jeg tok og lagde denne skissen I paint der jeg har tatt 1110,11 binært og gjort det om til decimalt som blir 14,75. Men så lenge er det noen som har en ide om hvordan formelen min kan brukes i .net til og ta binære tall med komma og convertere den om til binært?

 

Vet ikke helt hvordan skal forklare dette men gjør så godt jeg kan:

1. Du begynner fra venstre og går mot høyre.

2. Tallet som er først i stykket her er 1 dette skal du gange med grunntallet i tallsystemet som skal være opphøyd med det tall plasen her er det 3 og lsik fortsetter det. Helt til etter 0 her begynner det med - siden det er på andre siden av streken.

3. I dette stykket blir det 1 * 2 -1 og 1*2 -2 dette kan settes opp som 1/2-1 og 1/2 -2 som altså blir 1 halvdet del og 1 fjerde del som blir 0.5 og 0.25 enkelt som bare det :)

binary_decimal.bmp

Endret av cookiefi
Lenke til kommentar

Skal det gjøres ordentlig, er det ganske komplisert.

IEEE Standard 754 forklarer alt i detalj, eller du kan kikke på

Intel sin "IA-32 SDM - Basic Architecture" hvis det er interresant.

 

Eller du kan gjøre slik:

 	byte[] b;
 	float fl = 32.01242f;
 	b = System.BitConverter.GetBytes(fl);
 	string outp = "";
 	int val;
 	foreach (byte bts in b)
 	{
   val = 1;
   for (int x = 0; x < 8; x++, val <<=1)
   {
   	outp = ((bts & val) == val ? "1" : "0") + outp;
   }
 	}
 	MessageBox.Show(outp);

Lenke til kommentar
I paint der jeg har tatt 1110,11 binært og gjort det om til decimalt som blir 14,75.

6808791[/snapback]

Formen 1110,11 er ikke lengre binær. Binær form er 0101010 og kan ikke innehold komma. (Binær = to-talls-system). Forskjellige programmeringsspråk benytter sine egne regelr for å representere float/real (tall med desimaler), integer (heltall) og negative tall. Hvis tallet skal kunne være negativt vil vesntre bit indikere om tallet er negativt. Antall bit totalt er avhengig av språk og definisjoner. Er tallet definert som byte kan det ikke være negativt, eller float og består av 8 bit.

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...