1. 将一个整数的二进制表示中的最后一位取反,即0变为1,1变为0。例如,1010的结果为1011。 答案:将该数与1进行异或运算。

  2. 将一个整数的二进制表示中的第n位取反,例如将1010的第3位取反后得到1110。 答案:将该数与1左移n-1位后的数进行异或运算。

  3. 判断一个整数是否为2的幂。 答案:若该数为2的幂,则其二进制表示中只有一位为1,将该数与该数减1后进行与运算,结果为0。

  4. 求一个整数的二进制表示中1的个数。 答案:将该数与该数减1后进行与运算,每进行一次操作,1的个数减1,直到该数为0。

  5. 将一个整数的二进制表示中的前n位清零,例如将101011的前3位清零后得到11。 答案:将该数右移n位后再左移n位。

  6. 将一个整数的二进制表示中的第n位设置为1。 答案:将该数与1左移n-1位后的数进行或运算。

  7. 将一个整数的二进制表示中的第n位设置为0。 答案:将该数与1左移n-1位后的数取反再进行与运算。

  8. 将一个整数的二进制表示中的最高位到第n位清零,例如将101011的最高位到第3位清零后得到11。 答案:将该数与(1<<n)-1进行与运算。

  9. 将一个整数的二进制表示中的第n位到第0位清零,例如将101011的第3位到第0位清零后得到101000。 答案:将该数与-1<<(n+1)进行与运算。

  10. 将一个整数的二进制表示中的第n位到第0位反转,例如将101011的第3位到第0位反转后得到101100。 答案:将该数与2^(n+1)-1进行异或运算。

给我出10到不同难度由易到难的位运算题带答案

原文地址: http://www.cveoy.top/t/topic/b9Z2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录