这行代码使用位运算来修改 m_llMarkers 数组的第一个元素,具体操作是将该元素的第 62 位设置为 0。

BIT_CHARGE_CONVERTED 是一个 Long 类型的常量,表示二进制下只有第 62 位为 1,其他位都为 0。

代码中使用了以下操作符:

  • |:位或运算符,将两个操作数的对应位进行或运算。
  • -:减法运算符,将两个操作数相减。

代码解析:

  1. (m_llMarkers[0] | BIT_CHARGE_CONVERTED):将 m_llMarkers 数组的第一个元素与 BIT_CHARGE_CONVERTED 进行位或运算。由于 BIT_CHARGE_CONVERTED 只有第 62 位为 1,所以该运算的结果是将 m_llMarkers[0] 的第 62 位设置为 1,其他位保持不变。
  2. (m_llMarkers[0] | BIT_CHARGE_CONVERTED) - BIT_CHARGE_CONVERTED:将上一步的结果减去 BIT_CHARGE_CONVERTED。由于 BIT_CHARGE_CONVERTED 只有第 62 位为 1,所以该运算的结果是将 m_llMarkers[0] 的第 62 位设置为 0,其他位保持不变。
  3. m_llMarkers[0] = ...:将上一步的结果赋值给 m_llMarkers 数组的第一个元素。

总结:

这行代码通过位运算将 m_llMarkers 数组的第一个元素的第 62 位设置为 0,相当于从 m_llMarkers[0] 中移除 BIT_CHARGE_CONVERTED 标志。

Java 中 m_llMarkers[0] = (m_llMarkers[0] | BIT_CHARGE_CONVERTED) - BIT_CHARGE_CONVERTED; 代码解析

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

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