Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Extra libraries, Code snippets, applications etc. » C++ language problems and code snippets » Time for little quiz!
Re: Time for little quiz! [message #2252 is a reply to message #2251] Wed, 05 April 2006 12:04 Go to previous messageGo to previous message
mirek is currently offline  mirek
Messages: 14256
Registered: November 2005
Ultimate Member
gprentice wrote on Wed, 05 April 2006 05:20

luzr wrote on Wed, 05 April 2006 20:54

PS, note this nice gem as well:

x.colorcount += (-q >> 31) & 1;

Smile

Mirek




Do you feel like explaining?

I'm sure you know that right shift of a signed negative value has an implementation defined result and that int isn't always 32 bits and ... why would you write obscure code like this ???

Graeme



To avoid conditional jump in inner loop:

I need

if(q) colorcount++;

Now I know that q is positive number or zero. By negating positive number, you obviously get 1 in the highest bit. By negating zero, you get zero...

BTW, U++ guarantees int to be at least 32 bits (in other words, it requires it as well Wink Also, right shift is implementation defined, however it guarantees that it is a shift... (I mean, what is implementation defined is content of high bits, but obviously, existing bits have to be shifted...)

On the similar theme:

inline byte Saturate255(int x)             { return byte(~(x >> 24) & (x | (-(x >> 8) >> 24)) & 0xff); }


jump-less equivalent of min(max(x, 0), 255) (important in image processing).

Mirek

[Updated on: Wed, 05 April 2006 12:05]

Report message to a moderator

 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: STL multimap
Next Topic: explanation of c++ typedef line
Goto Forum:
  


Current Time: Wed Apr 30 20:34:24 CEST 2025

Total time taken to generate the page: 0.01152 seconds