Why not find the sign, calculate the binary of the absolute value, then make the result negative (twos complement) if necessary?
Just a thought. [EMAIL PROTECTED] wrote: > Hi, > I'm trying to get this binary converter working, but I can't seem to get the > negatives to work properly. If the integer is too low, the 0's that are > added for the amount of bits gets out of whack. I've tried to solve the > problem by adding another 'count' meter by which I can then tell if there > are too many 0's, but it hasn't worked at all. > CODE: > def conversion(n): > b = '' > while n > 0: > r = n%2 > n = n/2 > r = str(r) > b = r+b > return b > > def positive(n,bits,count): > append_zeros = bits - count > if append_zeros > 0: > return "0" + (append_zeros-1)*"0" + conversion(n) > > def negative(n,bits,count,new_count): > n = abs(n) > append_zeros = bits - count > while new_count > bits and new_count < bits-count: > append_zeros = append_zeros - 2 > continue > if append_zeros > 0: > return "1" + (append_zeros-6)*"0" + conversion(n) > > def signed_mag(): > print "" > print "--------------------" > print "Signed Binary" > print "--------------------" > print "" > n = int(raw_input("Please enter a signed integer: ")) > bits = int(raw_input("Please enter the number of bits: ")) > count = conversion(n).count("0") + conversion(n).count("1") > new_count = 0 > new_count = negative(n,bits,count,new_count).count("0") \ > + negative(n,bits,count,new_count).count("1") > if bits - 1 < count: > print "Out of range." > else: > if n < 0: > print n,"is encoded as", negative(n,bits,count,new_count), \ > "in Signed Binary." > elif n > 0: > print n,"is encoded as", positive(n,bits,count), \ > "in Signed Binary." > else: > print "That is not an valid signed interger." > > Any help will be greatly appreciated. Thanks in advance. > > Cheers, > Devon > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor