У нас есть один символ Chr
на входе. Выходной сигнал должен иметь строчный регистр Chr
, если Chr
имеет верхний регистр и наоборот.C++, наиболее эффективный способ изменения верхнего и нижнего регистров и наоборот без ветвления состояния
Trivial реализации с использованием if else
заявление:
if(Chr>='a' && Chr<='z') cout<<(unsigned char)(a-32);
else cout<<(unsigned char)(a+32);
Не могли бы вы предложить решение без каких-либо условий ветвления?
Нечто вроде Chr + 32*(<sign of>(Chr - 'a'))
?
Обновление: Я задал ASCII, когда задал этот вопрос.
В ASCII действительно вы можете, и это умный способ сделать это. (Если вы упомянули это ограничение, я думаю, что это получит много upvotes.) – Bathsheba
Это работает, только если ввод является алфавитным символом, но не для пунктуации, цифр и т. Д. Но если это действительно так, то это здорово. – mars
A (41): 0100,0001 против (61): 0110,0001. Таким образом, бит 5 (32) является коммутатором. ASCII так красив. –