C++ 位运算 解释一下一个语句

A[i] ^= (1<<(s[j]-'A'));

可以解释一下他做了哪些变换吗?

O(∩_∩)O谢谢

mrs_empress
浏览 1396回答 2
2回答

MinRam

首先按优先级拆分变换如下: 1.    s[j]-'A'       ,C++中进行ASCII码相减。得到一个数。(个人认为s[j]应该为某大写字母)                               如:s[j]为'B',则所得的值为1 2.   1<<(  结果 ) ,    根据相减的结果进行左移位。                           如结果为1,则得到二进制为0000 0000,0000 0000,000 0000,0000 0010 (32位环境下) 3.   A[i] ^= 结果 ,   对结果进行取反。                           如果结果为2步骤时候,则得到二进制位1111 1111,1111 1111,1111 1111,1111 1101                           再根据A[i]的类型进行读取该串二进制表达的值。

Xyino_Snake

这太简单了。字符变为整数,执行运算,移位,异或赋值运算。完了。
打开App,查看更多内容
随时随地看视频慕课网APP