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 #2263 is a reply to message #2252] Wed, 05 April 2006 14:26 Go to previous messageGo to previous message
hojtsy is currently offline  hojtsy
Messages: 241
Registered: January 2006
Location: Budapest, Hungary
Experienced Member
luzr wrote on Wed, 05 April 2006 06:04


Now I know that q is positive number or zero. By negating positive number, you obviously get 1 in the highest bit.
I am afraid there is no guarantee provided by the C++ standard for the bit encoding of negative numbers. Depending on any specific encoding could be either implementation-defined or undefined behaviour. I suggest some other variants which have standard-defined behaviour.
if(q) colorcount++;            // supposed to be slow(?)
colorcount += (-q >> 31) & 1;  // luzr's solution
coloccount += bool(q);         // suggested solution 1
coloccount += (q != 0);        // suggested solution 2
coloccount += !!q;             // suggested solution 3

 
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: Tue May 21 12:34:51 CEST 2024

Total time taken to generate the page: 0.02431 seconds