Springen naar inhoud

Het binair stelsel


  • Log in om te kunnen reageren

#1

Raul

    Raul


  • >100 berichten
  • 159 berichten
  • Ervaren gebruiker

Geplaatst op 26 augustus 2008 - 20:15

In het decimaal (tientallig stelsel) gebruiken we het grondgetal 10, dus 1234 = 1.103+2.102+3.101+4.100

Met n decimale cijfer(s) kunnen we 10n waarden voorstellen.

In het hexadecimale stelsel gebruiken we het grondgetal 16
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

Met n hex. decimale cijfer(s) kunnen we 16n waarden voorstellen.

dus 12h is niet gelijk aan 12 want:
12h = 1.161 + 2.160 = 18


In het binair stelsel gebruiken we het grondgetal 2, omdat dit systeem tweewaardig is, ofwel 1 ofwel 0
Met n cijfer(s) kunnen we 2n waarden voorstellen.

Ik ga volgende binaire getallen zonder calc naar decimaal omrekenen
0101 = 22 + 20 = 5
101 = 22 + 20 = 5
111001 = 25 + 24 + 23 + 20 = 32+16+8+1 = 57
10101010 = 21 + 23 + 25 + 27 = 170
11111111 = 20 + ... + 27 = 28-1 = 255

1111111111111111110111111111011111 =
234 - 1 - 25 - 215 = 1,7179836383 . 1010

Is er geen andere trucjes om deze omzetting naar decimaal te doen ??

Ik ga volgende decimale getallen zonder calc naar binair omrekenen
32
254
1000

32%2 = 0
16%2 = 0
8 % 2 = 0
4 % 2 = 0
2 % 2 = 0
1 % 2 = 1
de bits omgekeerd schrijven (down-top)
32 = 100000

254%2 = 0
127%2 = 1
63 % 2 = 1
31 % 2 = 1
15 % 2 = 1
7 % 2 = 1
3 % 2 = 1
1 % 2 = 1
454 = 11111110

1000%2 = 0
500 %2 = 0
250 %2 = 0
125 %2 = 1
62 %2 = 0
31 %2 = 1
15 %2 = 1
7 %2 = 1
3 %2 = 1
1 %2 = 1

1000 = 1111101000

Is er geen andere trucjes om deze omzetting naar binair te doen ??

Van hexadecimaal naar decimaal

ABCDh = A.163 + B.162 + C.161 + D.160
= 10.4096 + 11.256 + 12.16 + 13
= 40960 + 2816 + 192 + 13
= 43981

Van hexdecimaal naar binair
0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = A
1011 = B
1100 = C
1101 = D
1110 = E
1111 = F

ABCDh = 1010 1011 1100 1101

Van decimaal naar hexadecimaal
365

365%16 = 13
22 %16 = 6
1 %16 = 1

(365)10 = (16D)16


Oefening:

0,31910 = x2

x = ?

m (aantal cijfers na het , x2)
n = aantal cijfers na het decimaal punt van het decimaal getal

m = (n+1)/logg

(3+1)/log2 = 14

0,319 . 2 = 0,638 // 0
0,638 . 2 = 1,276 // 1
0,276 . 2 = 0,552 // 0
0,552 . 2 = 1,104 // 1
0,104 . 2 = 0,208 // 0
0,208 . 2 = 0,416 // 0
0,426 . 2 = 0,832 // 0
0,832 . 2 = 1,664 // 0
0,664 . 2 = 1,328 // 1
0,328 . 2 = 0,476 // 0
0,476 . 2 = 0,952 // 0
0,952 . 2 = 1,904 // 1
0,904 . 2 = 1,808 // 1
0,808 . 2 = 1,616 // 1

0,31910 = 0,10100001001112
15,31910 = 1111,10100001001112


Op die manier kunnen we ook van G10 naar G16 gaan!

(2DE,4)10 = (001011011110,0100)2 = (001011011110,0100)2 en dus (1011011110,01)2 .. KLOPT DIT ZO ??

Alleen wiskundig mag je zo brekenen volgens mij, want schakelingen werken niet op die manier, toch ?

Binair optellen:

lijn 1: 111111001010
lijn 2: 111111111111
lijn 3: 010101010101
lijn 4: 110011100001
lijn n: ...
---------------------

Twee per twee lijnen berekenen of alles in eens of wat is dan beter en gamakkelijk en minder fouten gevoelig ???

Als je 5 1's onder elkaar hebt dan ga je 1 opschrijven en 2 1's opschuiven ?

10
10
10
10
11
----
1011

OF

10 +
10
----
100

10 +
10
----
100

11


100 +
100
--------
1000 +
0011
--------
1011


Voor vermenigvuldiging ook ???
En voor verschil ?? rechtreeks of met two's complement ??




Dank jullie voor het lezen en dank bij voorbaat voor reageren.

Mvg

Veranderd door Raul, 26 augustus 2008 - 20:16

Doe niet jouw best om te leven, maar doe uw best om het leven een zin te geven.! (mijn eigen overtuiging)

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

Safe

    Safe


  • >5k berichten
  • 9907 berichten
  • Pluimdrager

Geplaatst op 26 augustus 2008 - 21:03

Het is geen grondgetal maar grondtal.

#3

Raul

    Raul


  • >100 berichten
  • 159 berichten
  • Ervaren gebruiker

Geplaatst op 26 augustus 2008 - 21:16

Het is geen grondgetal maar grondtal.



Dank uu :P

Ik ben niet de enige denk ik :D
http://www.google.be...r...oeken&meta=
Doe niet jouw best om te leven, maar doe uw best om het leven een zin te geven.! (mijn eigen overtuiging)

#4

Klintersaas

    Klintersaas


  • >5k berichten
  • 8614 berichten
  • VIP

Geplaatst op 26 augustus 2008 - 21:36

Ik heb niet alles gelezen, maar hierop wil ik toch wel even reageren.

dus 12h is niet gelijk aan 12 want:
12h = 1.161 + 2.160 = 18

ABCDh = A.163 + B.162 + C.161 + D.160
= 10.4096 + 11.256 + 12.16 + 13
= 40960 + 2816 + 192 + 13
= 43981

(...)

ABCDh = 1010 1011 1100 1101

Waar haal je die H vandaan? Het hexadecimale talstelsel werkt niet met een H.

Is er geen andere trucjes om deze omzetting naar binair te doen ??

Ja, maar die zijn bij mijn weten veel tijdrovender dan deze methode.

Veranderd door Klintersaas, 26 augustus 2008 - 21:37

Geloof niet alles wat je leest.

Heb jij verstand van PHP? Word Technicus en help mee om Wetenschapsforum nog beter te maken!


#5

Raul

    Raul


  • >100 berichten
  • 159 berichten
  • Ervaren gebruiker

Geplaatst op 26 augustus 2008 - 21:59

Ik heb niet alles gelezen, maar hierop wil ik toch wel even reageren.



Waar haal je die H vandaan? Het hexadecimale talstelsel werkt niet met een H.


Ja, maar die zijn bij mijn weten veel tijdrovender dan deze methode.


Dank u

Die 'h' om aan te duiden dat het om een hexadecimaal getal gaat..
Dus ofwel 12h ofwel 1216.

En weet je misschien hoe je een decimale positieve waarde naar binaire negatieve waarde kunt omzetten?

Hoe gaan we bijvoorbeeld -123 binair schrijven ??

Eerst:
Het getal 123 wordt als volgt in 16 bits voorgesteld: 0000000001111011

En dan?

Veranderd door Raul, 26 augustus 2008 - 22:01

Doe niet jouw best om te leven, maar doe uw best om het leven een zin te geven.! (mijn eigen overtuiging)

#6

Klintersaas

    Klintersaas


  • >5k berichten
  • 8614 berichten
  • VIP

Geplaatst op 26 augustus 2008 - 22:26

En weet je misschien hoe je een decimale positieve waarde naar binaire negatieve waarde kunt omzetten?

Hoe gaan we bijvoorbeeld -123 binair schrijven ??

Dat wordt gedaan m.b.v. een extra 1 of 0 die het teken weergeeft. Lees hier en hier meer.

Geloof niet alles wat je leest.

Heb jij verstand van PHP? Word Technicus en help mee om Wetenschapsforum nog beter te maken!


#7

Raul

    Raul


  • >100 berichten
  • 159 berichten
  • Ervaren gebruiker

Geplaatst op 26 augustus 2008 - 22:49

Dat wordt gedaan m.b.v. een extra 1 of 0 die het teken weergeeft. Lees hier en hier meer.



:P Theorie heb ik echt gelezen en ik weet dat er verschillende methodes zijn om negatieve binaire getallen voor te stellen.

Signed magnitude methode is één ervan, maar heeft een nadeel dat de decimale waarde 0 twee voorstellingsmanieren notatie heeft.
Als de opslag met 4 Bytes werkt dan zijn die twee notaties :
00000000.00000000.00000000.00000000
100000000.00000000.00000000.0000000

2de methode is 1-complement (1-c)
voor +5:
00000000.00000000.00000000.00000101
voor -5:
11111111.11111111.11111111.11111010

De waarde 0 heeft nog steeds 2 notatie manieren
00000000.00000000.00000000.00000000
11111111.11111111.11111111.11111111


3de methode is 2-complement (2-C)
+5
00000000.00000000.00000000.00000101

-5
eerst naar 1-C
11111111.11111111.11111111.11111010

En dan +1 om er 2-C van te maken
11111111.11111111.11111111.11111011

Met 2-C heeft 0 maar 1 voorstellingsmanier
000000000000000000000000000000
111111111111111111111111111111
100000000000000000000000000000

Klopt dat ?? maar dat is theorie, dat heb ik wel twee keer gelezen maar ik begrijp dat nog niet.

Als je met 4 Bytes (32 bit) 232 waarden kunt voorstellen , en dat hoogste + getal dat op deze wijze kan worden voorgesteld 4294967295 is, hoe kan je dan met 1 van die methodes + en - voorstellen ???

Met signed magnitude methode, als de meeste linkse bit 1 is dan is het een negatieve getal .. verder bij een capaciteit van 32 bits om numerieke gegevens voor te stellen wil dit zeggen 1 tekenbit voor + of - en 31 bits voor de getalwaarde !!!!

Maar 2^31 - 1 # 2^32 -1 :D
En dus met 4 Bytes kun je niet het hoogste getal 4294967295 voorstellen.

Het grootste 2-C getal dat men kan voorstellen met behulp van n bits is gelijk aan de decimale waarde (2n-1-1). De kleinste is dan -2n-1

Dus met 32 bits zal dat zo zijn:
Grootste is (232-1-1 = 2147483647)
Kleinste is -232-1 = -2147483648





Dank u wel

Veranderd door Raul, 26 augustus 2008 - 22:58

Doe niet jouw best om te leven, maar doe uw best om het leven een zin te geven.! (mijn eigen overtuiging)

#8

Raul

    Raul


  • >100 berichten
  • 159 berichten
  • Ervaren gebruiker

Geplaatst op 26 augustus 2008 - 23:43

Het getal 70 en -70 in 32-bit notatie

00000000.00000000.00000000.01000110
1-C (omgekeerd):
11111111.11111111.11111111.10111001
2-C (+1)
11111111.11111111.11111111.10111010

Dus 11111111.11111111.11111111.10111010 in 2-C is -70

Klopt dit ?

Voorstelling kommagetallen

Dat gaan we doen met IEEE 754-1985:

Geplaatste afbeelding

8 bits voor exponent en 24 voor mantissen

Het getal 322,44 binair voorstellen

322,44 = 0,32244 . 103

dus 3 (exponent) en 32244 (mantisse) en 0 is tekenbit omdat beide getallen positief zijn

00000011.000000000111110111110100



-0,003 = - 0,3 . 10 -2

10000010.100000000000000000000011

Klopt dit ?
Doe niet jouw best om te leven, maar doe uw best om het leven een zin te geven.! (mijn eigen overtuiging)

#9

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 27 augustus 2008 - 08:42

Dus 11111111.11111111.11111111.10111010 in 2-C is -70

Klopt dit ?

Als je bij dat getal binair 70 optelt krijg je weer nul, dus ja.

8 bits voor exponent en 24 voor mantissen

Het zit iets anders: bij 32 bit IEEE floats is de mantisse 23 bit, de exponent 8 bit, en er is 1 apart tekenbit (die slaat op het complete getal, niet op de exponent, zie onder).

Het getal 322,44 binair voorstellen
(...)
Klopt dit ?

Nee, de exponent wordt opgeslagen als 127+e, d.w.z. met een bias i.p.v.een tekenbit, waarbij e de echte exponent is. Op die manier kunnen ze exponenten opslaan van -127 tot +128.

Het getal zelf wordt omgevormd tot de (binaire) vorm [plusmin]1.xxx :D 2e waarbij xxx de fractie achter de komma is. En dan slaan ze alleen xxx, 127+e, en het teken op. Die 1 voor de binaire komma staat er dus impliciet en moet je er altijd bijdenken.

De meest linker bit in een float is het teken van het volledige getal.

Bijvoorbeeld 1.0 opslaan:
0 01111111 00000000000000000000000

eerste bit = 0 = getal is positief
volgende 8 bits = 127 = de exponent is 127-127=0
volgende 23 bits = 0 = de mantissa is 1.0
dus getal = 1.0 :P 20

5.0 opslaan: da's binair 101 = 1.01 :D 22s
0 10000001 01000000000000000000000

eerste bit = 0 = getal is positief
volgende 8 bits = 129 = de exponent is 129-127=2
volgende 23 bits = 01 = de mantissa is 1.01
dus getal = 1.01 :P 22


-23.625 opslaan:

-23.625 decimaal = -10111.101 (let op: je kunt hier niet zomaar de decimale komma verschuiven en dan 23625 omzetten... in binair staat hier -23 voor de komma, en 5/8 na de komma, net zoals er 625/1000 na de komma staat bij de decimale versie).
In binair de komma 4 plaatsen opschuiven totdat alleen de 1 er voor staat:
= -1.0111101 :P 24

1 10000011 01111010000000000000000

eerste bit = 1 = getal is negatief
volgende 8 bits = 131 = de exponent is 131-127=4
volgende 23 bits = 0111101 = de mantissa is 1.0111101
dus getal = -1.0111101 :D 24

Zie hier ook gelijk het nadeel van IEEE floats: een getal zoals 0.1 (decimaal, dus 1/10) kun je niet eens exact opslaan, want het is geen som van machten van 2.
In theory, there's no difference between theory and practice. In practice, there is.

#10

Raul

    Raul


  • >100 berichten
  • 159 berichten
  • Ervaren gebruiker

Geplaatst op 27 augustus 2008 - 15:14

Dat is nu duidelijker ja, dank u wel

Ik heb daarnaast nog andere oefeningen gemaakt, maar met scientific calculator op mijn pc kan ik niet testen of mijn oplossingen waar zijn.!!

Floating point bestaat ook niet in het binair stelsel buiten de wiskunde geloof ik ook, toch?!

Groetjes
Doe niet jouw best om te leven, maar doe uw best om het leven een zin te geven.! (mijn eigen overtuiging)





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures