Rekenen in een g-tallig stelsel
[volgende][vorige][inhoud] (versie: 23 augustus 2011)
6.4Rekenen in
een -tallig
stelsel
Bij het rekenen (optellen, aftrekken, vermenigvuldigen, delen met rest) in het tientallig stelsel
kunnen we op de bekende manier alles terugvoeren tot het rekenen met de getallen
. Algemener kan
men in het -tallig
stelsel het rekenwerk terugbrengen tot het rekenen met
.
Voor het maken van berekeningen is het dan handig om de tafels van
te kennen. Voor
blijft er weinig
over dat men uit het hoofd moet kennen, anderzijds moet men veel berekeningen uitvoeren: vergelijk het
optellen van
en
tientallig en tweetallig:
268
341
609
100001100
101010101
1001100001
Algoritmen
Voor optellen, vermenigvuldigen en delen met rest zijn er de (van de decimale
schrijfwijze) bekende algoritmen. Voor delen met rest is dat de staartdeling. Het principe
is dat met veelvouden van machten van het grondtal gerekend wordt. Dat
gebeurt in feite op grond van de rekenregels voor het rekenen met natuurlijke
getallen:
Python
We beschrijven de algoritmen voor optellen en vermenigvuldigen met Python en voegen
ze toe aan integer.py.
def remove0(nrlist): while nrlist[0]==0 and nrlist!=[0]: del nrlist[0] return nrlist def normalize(nrlist,g): normalform=[] while nrlist!=[]: qr=quotres(nrlist.pop(),g) if nrlist!=[]: nrlist[-1]=isum(nrlist[-1],qr[0]) elif qr[0]!=0: nrlist=[qr[0]] normalform.insert(0,qr[1]) return remove0(normalform) def equalize(nrlist1,nrlist2): list1,list2 = [0 for i in nrlist1],[0 for i in nrlist2] nrlist1=list2+nrlist1 nrlist2=list1+nrlist2 while nrlist1!=[0] and nrlist2!=[0] and\ nrlist1[0]==nrlist2[0]==0: del nrlist1[0] del nrlist2[0] return (nrlist1,nrlist2) def gsum(nrlist1,nrlist2,g): (nrlist1,nrlist2) = equalize(nrlist1,nrlist2) sums = [] while nrlist1!=[]: sums.append(isum(nrlist1.pop(0),nrlist2.pop(0))) return normalize(sums,g) def gprod(nrlist1,nrlist2,g): products = [[iprod(i,j) for j in nrlist2] for i in nrlist1] def sum1(list1,list2): return gsum(list1+[0],list2,g) return normalize(reduce(sum1,products),g)
Wat de verschillende functies doen laten we zien aan de hand van voorbeelden.