Permalänk
Medlem

2-komplement binära tal

Förstår inte hur man räknar ut 01111 (2-komplement binärt tal) till att bli 15.

Även hur 111000 (2-komplement binärt tal) till att bli -4.

Den som kan får jättegärna förklara på ett pedagogiskt sätt

Permalänk

http://susning.nu/Bin%e4ra_talsystemet och http://susning.nu/Tv%e5komplementsform
Fråga igen om du behöver mer pedagogisk förklaring så kan jag försöka.

Visa signatur

System.out.print(madness ? this.is.SPARTA : "");

Permalänk
Medlem

11101 betyder (från höger) 2^0 + 0^1 + 2^2 + 2^3 + 2^4 = 1+0+4+8 = 13

Visa signatur

Tidigare medlem i signaturgruppen militanta Appleanvändare

Permalänk
Medlem

Okej, du har 01111. Detta är ett tal med basen två.

Normalt talsystem har basen 10, ta till exempel talet 121. Det är alltså:
1*10^2 + 2*10^1 + 1*10^0= 121.
Här är alltså exponenten siffran position i talet räknat från höger.

På samma sätt funkar det binära talsystemet, fast här är alltså basen 2.
01111 = 0*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 15
0 + 8 + 4 + 2 + 1

Ett kanske enklare sätt att se detta är att man tänker att varje position i det talet är värt si och så mycket om det är en etta med i bilden.

Tänk talet 0101011:

0 1 0 1 0 1 1
etc... 64 32 16 8 4 2 1

Då blir det 32 + 8 + 2 + 1 = 43

Angående talet 111000 kodat som negativt:
Har inte detta lika färskt i minnet, men den mest signifikanta biten (längst till vänster) säger att det är ett negativt tal.
Om man sedan ettkomplementerar talet blir det ju:

000111 = 4, alltså -4..

Som sagt inte lika säker på det sista, någon annan får gärna förklara detta lite utförligare!

EDIT: här var man ju tydligen inte först! haha.

Visa signatur

[size="1"]Gentoo Linux är trevligt. fluxbox med. epost: fulmust@kakmonster.com web: http://www.kakmonster.com[/size]

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av julmust
Angående talet 111000 kodat som negativt:
Har inte detta lika färskt i minnet, men den mest signifikanta biten (längst till vänster) säger att det är ett negativt tal.
Om man sedan ettkomplementerar talet blir det ju:

000111 = 4, alltså -4..

Som sagt inte lika säker på det sista, någon annan får gärna förklara detta lite utförligare!

Så där görs i vissa system (vet inte om det görs fortfarande) men det som brukar användas är att för att göra ett tal negativt

det vill säga x*-1 så tar man x-1 och inverterar resultatet

exempel1:

00001100=12 >> 00001100-00000001=00001011 >> invertera 10000100=-12

exempel2: pseudo c syntax

1100==(~(1100-1))

Visa signatur