[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
**Subject**: **Re: Some thoughts on integer exponentiation (and an implementation)**
**From**: Sean Conner <sean@...>
**Date**: Mon, 15 May 2017 03:36:54 -0400

It was thus said that the Great Stefan Ginsberg once stated:
>
> > On 15 May 2017, at 01:13, Sean Conner <sean@conman.org> wrote:
> >
> > Shifting is just multiplication or division by two. At the CPU level,
> > there is a distinction made between shifts (left (multiplication) which
> > shifts in 0s and right (division) which shifts in the sign bit) and rotates
> > (shifts the bits, rotating in the carry bit).
> >
> > -spc
>
> What I really meant is that a shift operator which disallows shifting out
> (all) bits would be less-than-useful.
I'm still confused. Ignoring rotates (which rotate the bits) CPUs tend to
support two forms of shifting, an unsigned variant (where 0 is copied in for
right shifts) and a signed variant (where the sign bit is copied for right
shifts) and are (nominally) used for multiplication/division by 2, which
makes it an arithmetic operation, and which I use to replace certain
exponential operations I used from Lua 5.1/5.2:
x = 2^30 -- Lua 5.1, 5.2 to get 1073741824
x = 1<<30 -- Lua 5.3 to get 1073741824
-spc