Computer Science Canada Decimal to Binary in Turing |
Author: | vg19 [ Fri Jan 23, 2004 11:11 pm ] |
Post subject: | Decimal to Binary in Turing |
hey, im kinda new to turing. In school, we are trying to make a deciaml to binary converter. This is what I have right now. (please keep in my im new to turing). Its not wokring properly because it will display numbers higher than 1. Id really apperciate help. var num1 :int var binary: int var temp: int put "What is the first number?" get num1 binary := num1 div 256 put binary temp := (num1-(binary * 256)) binary := temp div 128 put binary temp := (num1-(binary * 128)) binary := temp div 64 put binary temp := (num1-(binary * 64)) binary := temp div 32 put binary temp := (num1-(binary * 32)) binary := temp div 16 put binary temp := (num1-(binary * 16)) binary := temp div 8 put binary temp := (num1-(binary * 8)) binary := temp div 4 put binary temp := (num1-(binary * 4)) binary := temp div 2 put binary temp := (num1-(binary * 2)) binary := temp div 1 put binary temp := (num1-(binary * 1)) |
Author: | Delos [ Sat Jan 24, 2004 10:39 am ] |
Post subject: | |
Binary! Yeah. Ok, simple solution. First you need to understand a simple method of decimal-binary conversions: Take a decimal number, let's take 10. To convert to binary, it is simply a case of continually dividing by 2 and taking the remainder (using mod). Collect these and you will have the binary. Let's see: 10/2 = 5 rem 0 05/2 = 2 rem 1 02/2 = 1 rem 0 01/2 = 0 rem 1 exit at 0. Now, read ^ways, and you get 1010. That is 10 in binary. Simple eh? It works a lot more efficiently than hard-coded powers of 2. Of course for this, you need to know about loops. I'm not sure if you do. As well, the easiest way I can think of to do this is to store the binary result in a temporary string, then convert it to an int. This is of course kind of complex...but you seem like a really promising programmer! So go for it! (heheh ) |
Author: | shorthair [ Sat Jan 24, 2004 11:03 am ] |
Post subject: | |
i suggest putting a limitto the amount of time it divides ,ive had numbers that go one for over 200 divisions , which is just painful |
Author: | vg19 [ Sat Jan 24, 2004 11:30 am ] |
Post subject: | |
Hey thanks for the help. I got it to work, but the only probelm is now that the binary number is going in the opposite way. Example decimal#1 is coming out in binary as 10000000. How can I fix this? var num1 : int var binary : real var temp : real put "What is the first number?" get num1 temp := num1 mod 2 put temp.. binary := num1 div 2 temp := binary mod 2 put temp.. binary := binary div 2 temp := binary mod 2 put temp.. binary := binary div 2 temp := binary mod 2 put temp.. binary := binary div 2 temp := binary mod 2 put temp.. binary := binary div 2 temp := binary mod 2 put temp.. binary := binary div 2 temp := binary mod 2 put temp.. binary := binary div 2 temp := binary mod 2 put temp.. |
Author: | Delos [ Sat Jan 24, 2004 11:59 am ] | ||||
Post subject: | |||||
Well...that's no problem. If you do NOT need to manipulate the number, then just do this (I've done this in really basic Turing terms, so it should be simple to understand):
Do this for every div/mod routine. At the end:
All of this would be much much simpler in more complex constructs, but that can be done later. For now, this will work! |