/ 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
Spørgsmål ang. binære tal & overflow
Fra : JS


Dato : 21-11-04 22:24

347 i det binære talsystem svarer til: 101011011
221 i det binære talsystem svarer til: 011011101

Men burdet 347 ikke være -347? Jeg har læst at hvis et binært tal indledes
med et 1 så er det negativt.

Addere man de to tal får man:
101011011
011011101
1000111000

Men er det ikke en regel der siger at hvis man addere to binære tal med
forskelligt fortegn så kan det ikke giver overflow?


--
Mvh
Johs



 
 
Martin Larsen (21-11-2004)
Kommentar
Fra : Martin Larsen


Dato : 21-11-04 22:48

"JS" <dsa.@asdf.com> skrev i en meddelelse news:cnr0u9$d57$1@news.net.uni-c.dk...
> 347 i det binære talsystem svarer til: 101011011
> 221 i det binære talsystem svarer til: 011011101
>
> Men burdet 347 ikke være -347? Jeg har læst at hvis et binært tal indledes
> med et 1 så er det negativt.
>
> Addere man de to tal får man:
> 101011011
> 011011101
> 1000111000
>
> Men er det ikke en regel der siger at hvis man addere to binære tal med
> forskelligt fortegn så kan det ikke giver overflow?
>
Der er heller ikke overflow, men carry.

Mvh
Martin



JS (21-11-2004)
Kommentar
Fra : JS


Dato : 21-11-04 22:52


"Martin Larsen" <mlarsen@post7.tele.dk> skrev i en meddelelse
news:41a10c7c$0$33743$14726298@news.sunsite.dk...
> "JS" <dsa.@asdf.com> skrev i en meddelelse
news:cnr0u9$d57$1@news.net.uni-c.dk...
> > 347 i det binære talsystem svarer til: 101011011
> > 221 i det binære talsystem svarer til: 011011101
> >
> > Men burdet 347 ikke være -347? Jeg har læst at hvis et binært tal
indledes
> > med et 1 så er det negativt.
> >
> > Addere man de to tal får man:
> > 101011011
> > 011011101
> > 1000111000
> >
> > Men er det ikke en regel der siger at hvis man addere to binære tal med
> > forskelligt fortegn så kan det ikke giver overflow?
> >
> Der er heller ikke overflow, men carry.
>
> Mvh
> Martin


Ok, men burde 347 ikke være -347 da det indledes med 1?




Martin Larsen (21-11-2004)
Kommentar
Fra : Martin Larsen


Dato : 21-11-04 23:15

"JS" <dsa.@asdf.com> skrev i en meddelelse news:cnr2jo$dnj$1@news.net.uni-c.dk...
>
>
> Ok, men burde 347 ikke være -347 da det indledes med 1?
>
Du kan ikke skrive 347 med kun 8 bit...

Mvh
Martin



Anders Wegge Jakobse~ (21-11-2004)
Kommentar
Fra : Anders Wegge Jakobse~


Dato : 21-11-04 23:23

"JS" == JS <dsa.@asdf.com> writes:

> "Martin Larsen" <mlarsen@post7.tele.dk> skrev i en meddelelse
> news:41a10c7c$0$33743$14726298@news.sunsite.dk...
>> "JS" <dsa.@asdf.com> skrev i en meddelelse
> news:cnr0u9$d57$1@news.net.uni-c.dk...
>> > 347 i det binære talsystem svarer til: 101011011
>> > 221 i det binære talsystem svarer til: 011011101
>> >
>> > Men burdet 347 ikke være -347? Jeg har læst at hvis et binært tal
> indledes
>> > med et 1 så er det negativt.
>> >
>> > Addere man de to tal får man:
>> > 101011011
>> > 011011101
>> > 1000111000
>> >
>> > Men er det ikke en regel der siger at hvis man addere to binære tal med
>> > forskelligt fortegn så kan det ikke giver overflow?
>> >
>> Der er heller ikke overflow, men carry.
>>
>> Mvh
>> Martin


> Ok, men burde 347 ikke være -347 da det indledes med 1?

Så sæt et 0 foran. At det mest betydende ciffer er 1 betyder ikke
automatisk at der er tale om et negativt tal. Det afhænger helt og
holdent af hvordan du vælger at fortolke repræsentationen. Alle tals
binære repræsentation her jo et 1-tal som det mest betydende ciffer,
hvis man beskærer det hårdt nok.

--
/Wegge <http://wiki.wegge.dk>
echo mail: !#^."<>"|tr "<> mail:" dk@wegge
mailto:awegge@gmail.com - Invitationer på FCFS basis

Henning Makholm (22-11-2004)
Kommentar
Fra : Henning Makholm


Dato : 22-11-04 00:22

Scripsit Anders Wegge Jakobsen <wegge@wegge.dk>

> Alle tals binære repræsentation her jo et 1-tal som det mest
> betydende ciffer, hvis man beskærer det hårdt nok.

Næsten alle.

--
Henning Makholm "En tapper tinsoldat. En dame i
spagat. Du er en lykkelig mand ..."

Bertel Lund Hansen (22-11-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 22-11-04 13:04

JS skrev:

>347 i det binære talsystem svarer til: 101011011
>221 i det binære talsystem svarer til: 011011101

>Men burdet 347 ikke være -347? Jeg har læst at hvis et binært tal indledes
>med et 1 så er det negativt.

Det er både rigtigt og forkert. Det afhænger af hvordan
computeren tolker den binære repræsentation.

I programmeringssprog er der oftest to familier af tal, nemlig
dem med og dem uden fortegn (foruden decimaltal). I en 16-bit
repræsentation uden fortegn vil "1 0101 1011" betyde 347. Det
vil det i øvrigt også hvis det er med fortegn, for det er den
mest betydende bit der bærer fortegnet. Negative tal på den form
ville altså se således ud: 1xxx xxxx xxxx xxxx.

Det er praktisk at man direkte kan slå fortegnet op uden først at
skulle overveje hvor mange bit tallet fylder.

I en 8-bit repræsentation kunne kun 221 (011011101) tolkes
rigtigt, mens 101011011 ville give en mente som forsvinder.
101011011 vil derfor blive til 91.

Af tekniske årsager som er lidt omfattende at forklare, men også
spændende, bliver -347 oversat således til en 16-bit
repræsentation:
1111 1110 1010 0101

Det kaldes "tos komplement" (2's komplement).

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

Jan Pedersen (22-11-2004)
Kommentar
Fra : Jan Pedersen


Dato : 22-11-04 23:49


"Bertel Lund Hansen" <nospamius@lundhansen.dk> skrev i en meddelelse
news:0lk3q0tbu30nnsg18mmfftka3j8cqthbt4@news.stofanet.dk...
> JS skrev:
>
>>347 i det binære talsystem svarer til: 101011011
>>221 i det binære talsystem svarer til: 011011101
>
>>Men burdet 347 ikke være -347? Jeg har læst at hvis et binært tal indledes
>>med et 1 så er det negativt.
>
> Det er både rigtigt og forkert. Det afhænger af hvordan
> computeren tolker den binære repræsentation.
>
> I programmeringssprog er der oftest to familier af tal, nemlig
> dem med og dem uden fortegn (foruden decimaltal). I en 16-bit
> repræsentation uden fortegn vil "1 0101 1011" betyde 347. Det
> vil det i øvrigt også hvis det er med fortegn, for det er den
> mest betydende bit der bærer fortegnet. Negative tal på den form
> ville altså se således ud: 1xxx xxxx xxxx xxxx.
>
> Det er praktisk at man direkte kan slå fortegnet op uden først at
> skulle overveje hvor mange bit tallet fylder.
>
> I en 8-bit repræsentation kunne kun 221 (011011101) tolkes
> rigtigt, mens 101011011 ville give en mente som forsvinder.
> 101011011 vil derfor blive til 91.
>
> Af tekniske årsager som er lidt omfattende at forklare, men også
> spændende, bliver -347 oversat således til en 16-bit
> repræsentation:
> 1111 1110 1010 0101
>
> Det kaldes "tos komplement" (2's komplement).
>
og det er pisse irriterende at man ikke umiddelbart kan se om et tal er tos
komplement eller ej :( 2 tals systemet er ikke for mennesker :( Jeg ville
ønske man fik lavet nogle ordentlige analoge computere så vi kan få
mennesketal og begreber ind i computerverdenen : istedet for enten eller ,
on/off ; får vi on, off, lidt on, næsten off mv. :) der må optiske computere
kunne "do the trick" : intet lys, lidt lys, mere lys, meget lys :) for ikke
at tale om hele farvespektret kunne indføres :)

Nej pis.... selvfølgelig er det binære talsystem nok det smarteste mennesket
har udtænkt....uden det var microprocessor revolutionen nok ikke indtruffet
og vi sad stadig og rodede med vores gamle kuglerammer og regnestokke :)
Hvis man da ikke var gået den anden vej og havde lavet reverse engineering
på menneskets hjerne og havde designet ud fra det : så havde man kunnet
designe computere med holografisk memory hvor hver lille informationsenhed
rummede informationer om alle de andre enheders information samtidig med den
rummede sin egen information :) det er sku genialt. Mon det kan
implementeres nogensinde nu vi har valgt at basere IT teknologien på
elektronik og binære talsystemer ? tror det ikke , desværre :(



Bertel Lund Hansen (23-11-2004)
Kommentar
Fra : Bertel Lund Hansen


Dato : 23-11-04 05:44

Jan Pedersen skrev:

>og det er pisse irriterende at man ikke umiddelbart kan se om et tal er tos
>komplement eller ej

Det 'problem' er uløseligt. Det kan jo være at det slet ikke er
et tal, men et bogstav - eller et element i en strikkeopskrift.
Hvis man ikke ved hvordan et binært element skal tolkes, er man
på herrens mark.

Hvis man ved at man har med et 16-bit heltal med fortegn at gøre,
tager det nul komma dut at se om det er negativt.

>Jeg ville ønske man fik lavet nogle ordentlige analoge computere så vi kan få
>mennesketal og begreber ind i computerverdenen

Der er intet til hinder for at man med den traditionelle teknik
laver en decimal computer. Man skal bare opdele
spændingsintervallet i ti afgrænsede områder, så kan man kode
hvert ciffer direkte.

Det giver bare så forbistret mange problemer (systemet skal
overalt kunne aflæse ti forskellige spændinger i stedet for to)
og risiko for overlap. Det er næppe tilfældigt at man har lagt
sig fast på det binære system.

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

Torben Ægidius Mogen~ (23-11-2004)
Kommentar
Fra : Torben Ægidius Mogen~


Dato : 23-11-04 13:56

Bertel Lund Hansen <nospamius@lundhansen.dk> writes:


> Der er intet til hinder for at man med den traditionelle teknik
> laver en decimal computer. Man skal bare opdele
> spændingsintervallet i ti afgrænsede områder, så kan man kode
> hvert ciffer direkte.
>
> Det giver bare så forbistret mange problemer (systemet skal
> overalt kunne aflæse ti forskellige spændinger i stedet for to)
> og risiko for overlap. Det er næppe tilfældigt at man har lagt
> sig fast på det binære system.

Nogle tidlige computere brugte andre talsystemer end det binære. De
mest kendte eksempler er mekaniske regnemaskiner, der bruger hjul med
ti positioner og et mentesystem (Pascal var vist en af de første til
at lave en sådan), men også elektiske/elektroniske computere har brugt
decimaltal, dog som regel i form af binært kodet decimaltal (BCD),
hvor man bruger fire bit til hvert ciffer.

Et mere interessant alternativ til binære tal er de balancerede
trinære/ternære tal. Her er cifrene -1, 0 og +1, som regel bare
skrevet som -, 0 og +. Hver position angiver en potens af tre, så
cifferfølgen c_n ... c_1 c_0 angiver tallet c_n*3^n +...+ c_1*3 + c_0,
hvor c_i er 0, -1 eller +1.

Fordelene ved denne repræsentation er:

- Negative tal repræsenteres ligeså let som positive.

- Negation af tal fås ved at bytte + med - og vice versa.

- Ud fra et teoretisk synspunkt er systemet (en anelse) mere kompakt
end binære tal.

Det sidste ses ud fra følgende betragtning: Lad os antage at et ciffer
fylder proportionalt med antallet af forskellige cifre, så et ciffer i
tretalssystemet fylder 50% mere end et binært ciffer og et ciffer i
titalssystemet fylder fem gange så meget. Det er rimeligt, da man ved
repræsentation af cifre som spændinger må forvente, at gabet mellem
spændingerne for cifrene skal være den samme.

Et heltal N repræsenteret i base b med log_b(N) cifre (hvor log_b er
logaritmen i base b), dvs. log(N)/log(b) cifre hvor log er den
naturlige logaritmefunktion. Hvis hvert ciffer fylder b, er den
samlede plads b*log(N)/log(b). Da log(N) er uafhængigt af
talsystemet, findes den mest kompakte repræsentation der hvor b/log(b)
har minimum. Det har det i b = e, hvor e er basen for den naturlige
logaritme. Her er b/log(b) lig med e. For heltallige b fås:

b=2: 2.88539
b=3: 2.73072
b=4: 2.88539
b=5: 3.10667
b=6: 3.34866
b=7: 3.59729
b=8: 3.84719
b=9: 4.09608
b=10: 4.34294

Det ses altså at b=3 giver den mest kompakte repræsentation.

Der blev i radiorørenes tid bygget computere i Rusland, der brugte
balanceret ternær notation, men binær logik "vandt" af flere årsager:

- Elektronikken er betragtelig simplere.

- Selv om ternær logik er mere kompakt, bruger den mere energi.

Det sidste skyldes, at energien, der skal bruges til at skifte mellem
to spændinger på en givet tid, er kvadratisk med spændingsforskellen.
Energien for skift mellem to tilfældige tal N og M (som bruger samme
antal cifre) er i binær log_2(N)/2, da ca. halvdelen af cifrene
skifter. I ternær notation er alle cifferskift lige sandsynlige, og
energiforbrugert er

fra
- 0 +
t- 0 1 4
i0 1 0 1
l+ 4 1 0

dvs. et gennemsnit på 12/9 = 4/3. Antallet af skift er log_3(N), så
forholdet i energiforbrug er (4/3*log(N)/log(3))/(log(N)/log(2)/2) =
(4/3/log(3))/(1/log(2)/2) = 1.68248. Så ternær logik bruger 68% mere
strøm end binær logik. Tilsvarende regnestykke kan laves om
energiforbruget for at lægge tal sammen osv., og de giver lidt
forskellge forhold, men altid til fordel for de binære tal.

Denne beregning forudsætter dog en lineær spændingsskala. Hvis man
f.eks. bruger faser eller andet, hvor alle skift er lige "dyre", så er
ternær logik mere effektiv end binær. Men det vil kræve en helt
anderledes grundlæggende implementation.

Torben

Ulrik Smed (23-11-2004)
Kommentar
Fra : Ulrik Smed


Dato : 23-11-04 17:16

Torben Ægidius Mogensen wrote:

> Nogle tidlige computere brugte andre talsystemer end det
> binære. De mest kendte eksempler er mekaniske regnemaskiner,
> der bruger hjul med ti positioner og et mentesystem (Pascal
> var vist en af de første til at lave en sådan), men også
> elektiske/elektroniske computere har brugt decimaltal, dog som
> regel i form af binært kodet decimaltal (BCD), hvor man bruger
> fire bit til hvert ciffer.

Der er også nogen der pjatter med ægte analoge 'computere', fik lige den her
vist i går, og synes den er RET fed!
http://www.analog-synth.de/synths/logequ/logequ.htm

Man kan også få f.eks. analoge multipliere som IC'er. Jeg har lavet en skæg
lydtransposer til at lytte til ultralyd, som ganger en sinus med et signal
fra en mikrofon (dog med en hjemmelavet transistormultiplier). Hvis sinusen
f.eks. er 40KHz, kan man lytte til lyde der ligger omkring 30-50KHz.

--
Ulrik Smed
Århus, Denmark



Martin Larsen (23-11-2004)
Kommentar
Fra : Martin Larsen


Dato : 23-11-04 18:45

"Torben Ægidius Mogensen" <torbenm@diku.dk> skrev i en meddelelse news:7z4qjglo6s.fsf@pc-032.diku.dk...
>
> Der blev i radiorørenes tid bygget computere i Rusland, der brugte
> balanceret ternær notation, men binær logik "vandt" af flere årsager:

Den russiske computer hed Setun og blev startet af unge
studerende i 1958 og var klar i 1960 og virkede straks uden bugs.
Knuth har engang hævdet at man en skønne dag ville gå fra flip,
flop til flip, flap, flop. En byte i denne computer hedder tryte,
som består af 6 trits. I det balancerede ternære system skrives
-1 som 1 med streg over.
Afrunding i det ternære system består i simpel trunkering, og da
der ikke som i det binære skal skelnes mellem positive og
negative tal spares en masse if-sætninger, resultatet af en
sammenligning fås i et hug <, =, > , hvilket giver en klar
forbedring af hastigheden.
Der er vist ingen tvivl om at mange lavt-niveau algoritmer vil få
en højere æstetik i det ternære system.
Egentlig mærkeligt at man tilsyneladende ikke har "råd" til at
fremstille en ternær computer og studere dens algoritmer.

Mvh
Martin



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

Månedens bedste
Årets bedste
Sidste års bedste