예제 #1
0
def sdivide(a,b): # returns b%a in GF(2) slow/ascii version
    aa=listify (a);
    bb=listify (b);

    while True:
        try:
            one=bb.index(1);
        except:
            return 0;

    #    print "lb-o: ",len(bb)-one,"la",len(aa)
        if(len(bb)-one<len(aa)):
          break

#        print "b:   ",stringify(bb),one
#        print "a:   ",(" "*(one-1)),stringify(aa)

        for i in xrange(len(a)):
          if aa[i]==1:
            bb[one+i]=1-bb[one+i]
    #      print "i: %2d"%i,stringify(bb),"a=",aa[i]

    #    print "b:   ",stringify(bb),one

#    print "Result: ",stringify(bb)
    return int(stringify(bb),2)
예제 #2
0
def sdivide(a, b):  # returns b%a in GF(2) slow/ascii version
    aa = listify(a)
    bb = listify(b)

    while True:
        try:
            one = bb.index(1)
        except:
            return 0

    #    print "lb-o: ",len(bb)-one,"la",len(aa)
        if (len(bb) - one < len(aa)):
            break

#        print "b:   ",stringify(bb),one
#        print "a:   ",(" "*(one-1)),stringify(aa)

        for i in range(len(a)):
            if aa[i] == 1:
                bb[one + i] = 1 - bb[one + i]
    #      print "i: %2d"%i,stringify(bb),"a=",aa[i]

    #    print "b:   ",stringify(bb),one


#    print "Result: ",stringify(bb)
    return int(stringify(bb), 2)
예제 #3
0
def add(a,b): # unneccessary, as actually add(a,b) == a^b
    aa=listify(a)
    bb=listify(b)

    result=[]
    if (len(bb)>len(aa)):
        (aa,bb)=(bb,aa)
    for i in xrange(len(aa)):
        result[i]=(aa[i]+bb[i])%2

    return stringify(result)
예제 #4
0
def add(a, b):  # unneccessary, as actually add(a,b) == a^b
    aa = listify(a)
    bb = listify(b)

    result = []
    if (len(bb) > len(aa)):
        (aa, bb) = (bb, aa)
    for i in range(len(aa)):
        result[i] = (aa[i] + bb[i]) % 2

    return stringify(result)