Win a copy of Mesos in Action this week in the Cloud/Virtualizaton forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Math with array of bytes, need some guidance

 
D diller
Greenhorn
Posts: 29
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hey -

I am trying to write a program that takes an input of a file formatted as such:
number1
number2
operator1
number3
operator2
etc, where after number1 there is a sequence of number -- operator. Then the math for doing it should be number 1 (operator 1) number 2 = new number
The problem is that these numbers are far too large to use an int, probably even a float once you get down to many operations including powers. So I would like to use an array of bytes in order to calculate the number correctly.

My problem is that I have absolutely no idea where to start. Can anybody give me any pointers?
 
Ernest Friedman-Hill
author and iconoclast
Marshal
Pie
Posts: 24211
35
Chrome Eclipse IDE Mac OS X
 
D diller
Greenhorn
Posts: 29
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Homework assignment, can't. My professor for some reason thinks that making us do the hard things instead of using what's already available to us is the best way to teach us.
 
Campbell Ritchie
Sheriff
Pie
Posts: 48968
60
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Obviously you are supposed to think through the algorithms you are using.

Try an int[] where each member of the array represents a decimal digit, and maybe a boolean flag for positive and negative. You can go through from right to left adding numbers at different positions and use the / and % operators to obtain the result and the carry. That's adding. Then work out how to do subtracting multiplying and dividing.

Powers are much more difficult; unless they are whole numbers, they use logs and cannot be readily implemented by this method. The quickest way to implement powers is probably to use a recursive method. It isn't difficult, but I can't remember just at the moment how to do it.
 
D diller
Greenhorn
Posts: 29
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
He went over it a bit for the powers, so I'm not too worried about that - and I would use an int[] but he's already specified to use a byte[]. Oh well...

Thanks for the tip on % though.
 
Garrett Rowe
Ranch Hand
Posts: 1296
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You might be able to get some ideas from the Arbitrary-precision arithmetic wiki article
 
Campbell Ritchie
Sheriff
Pie
Posts: 48968
60
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
You can use bytes for the individual digits; each byte can hold from -128 to +127.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic