为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C C++
mrs_empress 2017-06-04 17:38:52
A[i] ^= (1<<(s[j]-'A'));可以解释一下他做了哪些变换吗?O(∩_∩)O谢谢
查看完整描述

2 回答

已采纳
?
MinRam

TA贡献87条经验 获得超24个赞

首先按优先级拆分变换如下:
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]的类型进行读取该串二进制表达的值。


查看完整回答
反对 回复 2017-06-10
?
Xyino_Snake

TA贡献31条经验 获得超22个赞

这太简单了。字符变为整数,执行运算,移位,异或赋值运算。完了。

查看完整回答
反对 回复 2017-06-11
  • 2 回答
  • 0 关注
  • 1395 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信