[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 05:20:27 -0400
 
It was thus said that the Great Oliver Kroth once stated:
> 
> >   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
>
> the difference in unsigned and signed shifting exists only in 
> right-shifts, where the sign bit, which is at the leftmost position, is 
> either kept (signed) or filled with zero or carry bit (unsigned)
> On left-shifts no two versions are needed.
  That, I get.  What I'm replying to is Stefan Ginsberg's statement:
> I don't consider shifting out bits the same thing as overflow, it is
> another type of operation.
  I don't---it's multiplication/division by 2 (in terms of overflow).
  -spc