This question already has answers here:
Testing if an integer is an uppercase ASCII letter using bit manipulation
                                
                                    (4个答案)
                                
                        
                                4年前关闭。
            
                    
如果x在0x41和0x5a之间(从'A'到'Z'的ascii),我必须返回1。仅允许按位运算符(~&^|<<>>)以及!+。像isupper这样的库函数不是。

我将不胜感激任何提示或帮助,因为我了解哪些范围有效,但是我不知道如何使用给定的运算符来操作它以返回1。

最佳答案

提示1-减法可以通过加上负数来完成。

提示2-可以使用按位运算符-n == ~n+1取反。

提示3-将非负数右移n等于除以2n:n>>1 == n/2n>>2 == n/4等。

09-27 20:58