/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
berpox 610
creamygirl 610
3773 570
10  jomfruane 570
Hex til decimal?
Fra : Paminu


Dato : 22-07-05 23:08

Når jeg konvertere FC000000 i hex til dec giver det: 4227858432. Men i et
andet program giver det: -67108864. Hvad er årsagen til at man kan fortolke
FC000000 på 2 måder?

 
 
Jakob Nielsen (22-07-2005)
Kommentar
Fra : Jakob Nielsen


Dato : 22-07-05 21:19

> Når jeg konvertere FC000000 i hex til dec giver det: 4227858432. Men i et
> andet program giver det: -67108864. Hvad er årsagen til at man kan
> fortolke
> FC000000 på 2 måder?

Man kan tolke det med og uden fortegn. Højeste bit kan , hvis sat, indikere
at tallet er negativt... dine 32 bit er så 1 bit fortegn og 31 bit talværdi.
Hvis højeste bit er sat så er tallet negativt og du kan finde værdien ved at
invertere alle 31 bit og lægge en til tallet.

Hvis du ser det uden fortegn så har du 32 værdi-bit og regner værdien som
normalt.



Paminu (23-07-2005)
Kommentar
Fra : Paminu


Dato : 23-07-05 00:23

Jakob Nielsen wrote:

>> Når jeg konvertere FC000000 i hex til dec giver det: 4227858432. Men i et
>> andet program giver det: -67108864. Hvad er årsagen til at man kan
>> fortolke
>> FC000000 på 2 måder?
>
> Man kan tolke det med og uden fortegn. Højeste bit kan , hvis sat,
> indikere at tallet er negativt... dine 32 bit er så 1 bit fortegn og 31
> bit talværdi. Hvis højeste bit er sat så er tallet negativt og du kan
> finde værdien ved at invertere alle 31 bit og lægge en til tallet.
>
> Hvis du ser det uden fortegn så har du 32 værdi-bit og regner værdien som
> normalt.

Findes der et online konverteringsprogram som tager højde for at mest
betydende bit er 1 og behandler det som et negativt tal?

Dem som jeg har googlet behander ikke de tal hvor mest betydende bit er 1
som negative tal. Jeg går udfra at de blot opfattes som "Unsigned" og det
jeg leder efter er et konverterings program til "Signed" tal.

Martin Larsen (22-07-2005)
Kommentar
Fra : Martin Larsen


Dato : 22-07-05 23:47

"Paminu" <jadajada@asd.com> skrev i en meddelelse news:dbro4d$ftc$1@news.net.uni-c.dk...
>
> Findes der et online konverteringsprogram som tager højde for at mest
> betydende bit er 1 og behandler det som et negativt tal?
>
Hvis ikke du kan finde ud af at invertere dine bits etc, kan du evt
prøve at trække hex 1 0000 0000 = 4294297296 fra den "forkerte"
konvertering.

Mvh
Martin



Martin Larsen (23-07-2005)
Kommentar
Fra : Martin Larsen


Dato : 23-07-05 00:26

hex 1 0000 0000 = 4294967296



Ole Tranberg (23-07-2005)
Kommentar
Fra : Ole Tranberg


Dato : 23-07-05 12:19

"Martin Larsen" <mlarsen@post7.tele.dk> skrev:

> "Paminu" <jadajada@asd.com> skrev i en meddelelse news:dbro4d$ftc$1@news.net.uni-c.dk...
>>
>> Findes der et online konverteringsprogram som tager højde for at mest
>> betydende bit er 1 og behandler det som et negativt tal?
>>
> Hvis ikke du kan finde ud af at invertere dine bits etc, kan du evt
> prøve at trække hex 1 0000 0000 = 4294297296 fra den "forkerte"
> konvertering.

Her er det oplagt at reklamere for googles lommeregner, som kan give
de to resultater ved at søge på hhv.:

0xFC000000 in decimal
Som giver søgeresultatet: 0xFC000000 = 4 227 858 432
(<http://www.google.dk/search?hl=da&ie=ISO-8859-1&q=0xFC000000+in+decimal&btnG=S%F8g&meta=>)


og
0xFC000000 - 0x100000000 = -67 108 864
Som giver søgeresultatet: 0xFC000000 - 0x100000000 = -67 108 864
(<http://www.google.dk/search?hl=da&ie=ISO-8859-1&q=0xFC000000+-+0x100000000+in+decimal&btnG=S%F8g&meta=>)

--
Mvh,
Ole Tranberg

Per Rønne (23-07-2005)
Kommentar
Fra : Per Rønne


Dato : 23-07-05 06:02

Paminu <jadajada@asd.com> wrote:

> Når jeg konvertere FC000000 i hex til dec giver det: 4227858432. Men i et
> andet program giver det: -67108864. Hvad er årsagen til at man kan fortolke
> FC000000 på 2 måder?

To-komplement.

http://en.wikipedia.org/wiki/Twos_complement
--
Per Erik Rønne

Paminu (23-07-2005)
Kommentar
Fra : Paminu


Dato : 23-07-05 10:13

Per Rønne wrote:

> Paminu <jadajada@asd.com> wrote:
>
>> Når jeg konvertere FC000000 i hex til dec giver det: 4227858432. Men i et
>> andet program giver det: -67108864. Hvad er årsagen til at man kan
>> fortolke FC000000 på 2 måder?
>
> To-komplement.
>
> http://en.wikipedia.org/wiki/Twos_complement


"If the leftmost bit is 0, the number is interpreted as a non-negative
binary number. If the most significant (leftmost) bit is 1, the bits
contain a negative number in two's complement form"


Det svarer vel bare til at man opfatter binære tal som signed. Kan ikke lige
se hvad der adskiller signed fra to-komplement.


Søren Kongstad (23-07-2005)
Kommentar
Fra : Søren Kongstad


Dato : 23-07-05 08:45

Paminu wrote:

> Det svarer vel bare til at man opfatter binære tal som signed. Kan ikke lige
> se hvad der adskiller signed fra to-komplement.
>

http://en.wikipedia.org/wiki/Signed_number_representations

Kort sagt så er signed blot tallet i binær med bitten længst til venstre
sat til et ved negative tal.

Det betyder at tallet 0 har to repræsentationer nemlig

0000 0000
og
1000 0000

for 8 bit tal.

I 1 komplement så negerer man det positive tal for at få det negative.


0000 0110 (6)

bliver
1111 1001 (-6)

Bemærk at også her er der tegn for 0

0000 0000
og
1111 1111

1 komplement har den fordel at man kan umiddelbart kan summere positive
og negative tal.

6 og -6 ovenfor giver 1111 1111 altså 0 som resultat

0000 1000 (8) +
1111 1001 (-6)

0000 0010 (2)

Men både signed og 1 komplement er degenererede repræsentationer. En
degnereret repræsentation har synonymer blandt repræsentationerne, i
disse tilfælde er der synonymer for 0.

For at rette op på dette anvender man 2 komplement

Her lægger man et til 1 komplementet

Så (-0) bliver

0000 0000 (0)
1111 1111 (-0 i 1 komplement)
0000 0000 (-0 i 2 komplement)

Således finder vi (-6)

0000 0110 (6)
1111 1001 (-6 1 komplement)
1111 1010 (-6 2 komplement)

Først ser vi at 6+(-6) giver 0:

0000 0110+
1111 1010
=0000 0000

Ligeledes giver 8+(-6) 2 :
0000 1000+
1111 1010
=0000 0010


Med 2 komplement kan vi altså implementere både addition og subtraktion
hvis vi har kredsløb til at negere og kredsløb til at addere.

For 2 komplement tal gælder stadig at bitten længst til venstre viser om
tallet er positivt eller negativt.

/Søren

Per Rønne (23-07-2005)
Kommentar
Fra : Per Rønne


Dato : 23-07-05 08:54

Paminu <jadajada@asd.com> wrote:

> Per Rønne wrote:

> > Paminu <jadajada@asd.com> wrote:

> >> Når jeg konvertere FC000000 i hex til dec giver det: 4227858432. Men i et
> >> andet program giver det: -67108864. Hvad er årsagen til at man kan
> >> fortolke FC000000 på 2 måder?

> > To-komplement.

> > http://en.wikipedia.org/wiki/Twos_complement

> "If the leftmost bit is 0, the number is interpreted as a non-negative
> binary number. If the most significant (leftmost) bit is 1, the bits
> contain a negative number in two's complement form"

> Det svarer vel bare til at man opfatter binære tal som signed. Kan ikke lige
> se hvad der adskiller signed fra to-komplement.

»Signed« har to nuller: +0 og -0. Det har 2-komplement ikke. Det
medfører så at der er flere negative tal, end der er positive {nøjagtigt
et}. Se også 1-komplement.


--
Per Erik Rønne

Bertel Lund Hansen (23-07-2005)
Kommentar
Fra : Bertel Lund Hansen


Dato : 23-07-05 14:14

Paminu skrev:

>Det svarer vel bare til at man opfatter binære tal som signed. Kan ikke lige
>se hvad der adskiller signed fra to-komplement.

To-komplement er kun én måde at realisere tal med fortegn. Der er
ikke noget i vejen for at vedtage at MSB er fortegnet mens
cifrene er kodet i BCD - eller en vilkårlig anden kodningsform af
tal.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Per Rønne (23-07-2005)
Kommentar
Fra : Per Rønne


Dato : 23-07-05 14:50

Bertel Lund Hansen <nospamfilius@lundhansen.dk> wrote:

> Der er ikke noget i vejen for at vedtage at MSB er fortegnet mens cifrene
> er kodet i BCD

Jov. Det giver to nuller.
--
Per Erik Rønne

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste