Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The correct answer is:

the largest number representable in 1 bit is any number (including +infinity and beyond).

This article describing various Rube Goldberg machines, there is no need to agree on different ways of representing numbers when one can set a single bit to 1 to represent any desired pre-defined number, or 0 to represent its absence (or the number 0).





A Rube Goldberg machine is one intentionally designed to perform a simple task in a comically overcomplicated way, usually consisting of a series of simple unrelated devices.

Programs like Melo and w128 are the opposite, performing a hard task with the simplest means, using only a few highly inter-related parts.

Your proposed representation is exactly the kind of cheating, to get the results you want, that the article purposely avoids.


1. s/The largest number representable in 64 bits/The widest set of numbers representable in 64 bits/

2. Using a Turing machine to model a von Neumann machine looks exactly like a Rube Goldberg machine. It even resembles it [1].

3. There is no point in talking about a 64-bit limit when the underlying model requires an infinite amount of RAM (tape).

4. > A Rube Goldberg machine is one intentionally designed to perform a simple task in a comically overcomplicated way

People usually don't realize they've built a Rube Goldberg machine...

5. > Programs like Melo and w128

My point is that just as you pre-defined the program you're going to use, you can pre-define the largest integer. That's 1 bit of entropy. I was working on a project with custom 5-bit floating-point numbers implemented in hardware, and they had pre-defined parts of the mantissa. So the actual bits are just part of the information.

---

1. https://en.wikipedia.org/wiki/Turing_machine#/media/File:Tur...


Came here to say the same thing. In my encoding there are close to 2^64 standard numbers and a few values just below the top end reserved for encoding of hyperoperations. That should cover most requirements, including silly ones.

That's similar to how kdb+/q represent nulls and infinities

This is certainly pragmatic, although it breaks the math

  q type        size   q literal forms                                   underlying integer value (encoding)
  ----------------------------------------------------------------------------------------------------------
  short (h)     16-bit 0Nh / -0Wh / 0Wh                                  null = -32768; -inf = -32767; +inf = 32767
  int (i)       32-bit 0Ni / -0Wi / 0Wi                                  null = -2147483648; -inf = -2147483647; +inf = 2147483647
  long (j)      64-bit 0N (or 0Nj) / -0W (or -0Wj) / 0W (or 0Wj)          null = -9223372036854775808; -inf = -9223372036854775807; +inf = 9223372036854775807
--

https://code.kx.com/q/basics/datatypes/

https://code.kx.com/q/basics/datatypes/#infinities




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: