signed nibble

H. S. Teoh hsteoh at quickfur.ath.cx
Mon Jan 7 20:28:21 UTC 2019


On Mon, Jan 07, 2019 at 08:06:17PM +0000, Patrick Schluter via Digitalmars-d-learn wrote:
> On Monday, 7 January 2019 at 18:56:17 UTC, H. S. Teoh wrote:
> > On Mon, Jan 07, 2019 at 06:42:13PM +0000, Patrick Schluter via
> > Digitalmars-d-learn wrote:
[...]
> > > byte b = nibble | ((nibble & 0x40)?0xF0:0);
> > 
> > This is equivalent to doing a bit comparison (implied by the ?
> > operator).  You can do it without a branch:
> > 
> > 	cast(byte)(nibble << 4) >> 4
> > 
> > will use the natural sign extension of a (signed) byte to "stretch"
> > the upper bit.  It just takes 2-3 CPU instructions.
> > 
> 
> Yeah, my bit-fiddle-fu goes back to pre-barrel-shifter days. Up to 32
> bit processors, shifting was more expensive than branching.

Really?  Haha, never knew that, even though I date all the way back to
writing assembly on 8-bit processors. :-D


T

-- 
One reason that few people are aware there are programs running the internet is that they never crash in any significant way: the free software underlying the internet is reliable to the point of invisibility. -- Glyn Moody, from the article "Giving it all away"


More information about the Digitalmars-d-learn mailing list