Avatar billede somaliomar Praktikant
03. oktober 2002 - 14:40 Der er 4 kommentarer og
1 løsning

Binær division med 1 i tælleren

Jeg leder efter en metode til udregne en binær division til en PIC-kreds. Tælleren er altid 1 og nævneren kan have en værdi mellem 0-16777216 (24 bit).

    1
-------- = ?
  x:x:x
Avatar billede lasse_buck Nybegynder
04. oktober 2002 - 03:22 #1
En binær division er bare en forenklet version i forhold til 10-tals systemet.

Du har hele tiden en rest R og en Divisor = x:x:x. Til at starte med er R=1.

Proceduren er som følger:
1. Hvis R <  D sæt et 0
2. Hvis R >= D sæt et 1 og sæt R = R - 1
Hvis R = 0, så er vi færdige

3. Skift R en plads til venstre (vi ganger med 2)
4. Start fra 1


Jeg har vist et eksempel nedenfor (resultatet er en uendelig brøk).

          1  : 101
          ------      = 0,
          10
          0          = 0,0
          ------
          100
            0        = 0,00
          ------
          1000
          101        = 0,001
          ------
            110
            101      = 0,0011
          ------
              10
              0      = 0,00110
          ------
              100
                0    = 0,001100
          --------
              1000
              101    = 0,0011001
          --------
                110
                101  = 0.00110011
          ----------
                  10
Avatar billede lasse_buck Nybegynder
04. oktober 2002 - 03:26 #2
Hov, mine justeringer røg sig en tur, men jeg håber ikke det forvirrer for meget.

Det som står under hver linie er den nye rest tilføjet et 0.
Avatar billede somaliomar Praktikant
11. oktober 2002 - 22:43 #3
Jeg er ikke helt med på din forklaring. Jeg har fundet en hel anden løsning på problemet, men som tak får pointene alligevel!

/Omar
Avatar billede lasse_buck Nybegynder
14. oktober 2002 - 09:29 #4
Tak for point. Det er en skam, at du ikke forstod forklaringen.
Der er faktisk ikke forskel på at dividere decimale og binære tal.

Ved normal division har man hele tiden en rest.
Hvis x går n gange op i resten, så skriver man n i sit resultat og trækker n*x fra sin rest.
Hvis den nye rest ikke er 0, så ganges den nye rest med 10.
Eksempel:
13 : 4
Rest = 13
3*4 = 12
ny rest = 13-12 = 1
10*rest = 10
2*4 = 8
ny rest = 10-8 = 2
10*rest = 20
5*4 = 20
ny rest = 0

Resultat = 3,25

Det er præcis det samme i en binær division, men n er altid 0 eller 1.

Hjalp det?

Jeg vil da gerne høre, hvilken løsning du valgte.
Avatar billede somaliomar Praktikant
14. oktober 2002 - 13:27 #5
Det var bedre. Mange tak!

Den løsning, jeg anvender nu, er ikke meget anderledes end den jeg efterspørger her. Jeg har fundet en assembler kode på http://www.piclist.com/techref/microchip/math/div/48by24ng.htm der kan dividere 48 bit med 24 bit. Så har jeg valgt, at dele 1.000.000 med 24 bit i stedet for 1.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester