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