int x;
int pow2; // always a positive power of 2
int sgn; // always either 0 or 1
// ...
// ...
if(sgn == 0)
x -= pow2;
else
x += pow2;
बेशक
मैं सशर्त बचने की जरूरत है। अब तक का सबसे अच्छा मैं
x -= (1|(~sgn+1))*pow2
परन्तु इसमें एक गुणा शामिल है जिसे मैं टालना चाहूंगा। अग्रिम में धन्यवाद।
संपादित करें: धन्यवाद सब,
x -= (pow2^-sgn) + sgn
चाल करने के लिए लगता है!
आप तो जवाब को स्वीकार करना चाहिए। – Simone
जब गुणा कोई समस्या नहीं है, तो हमारे पास यह भी है: 'x - = (1-2 * sgn) * पाउ', मैपिंग '0 -> 1' और' 1 -> -1' का उपयोग करके, जो 'x - > (1-2x) '। – rafak
एक बार फिर, कोष्ठक! '^' की प्राथमिकता '+' से कम है, इसलिए 'x - = pow2^-sgn + sgn'' x - = pow2^(- sgn + sgn) '' x - = pow2' है। – lijie