Java 中 m_llMarkers[0] = (m_llMarkers[0] | BIT_CHARGE_CONVERTED) - BIT_CHARGE_CONVERTED; 代码解析
这行代码使用位运算来修改 m_llMarkers 数组的第一个元素,具体操作是将该元素的第 62 位设置为 0。
BIT_CHARGE_CONVERTED 是一个 Long 类型的常量,表示二进制下只有第 62 位为 1,其他位都为 0。
代码中使用了以下操作符:
|:位或运算符,将两个操作数的对应位进行或运算。-:减法运算符,将两个操作数相减。
代码解析:
(m_llMarkers[0] | BIT_CHARGE_CONVERTED):将m_llMarkers数组的第一个元素与BIT_CHARGE_CONVERTED进行位或运算。由于BIT_CHARGE_CONVERTED只有第 62 位为 1,所以该运算的结果是将m_llMarkers[0]的第 62 位设置为 1,其他位保持不变。(m_llMarkers[0] | BIT_CHARGE_CONVERTED) - BIT_CHARGE_CONVERTED:将上一步的结果减去BIT_CHARGE_CONVERTED。由于BIT_CHARGE_CONVERTED只有第 62 位为 1,所以该运算的结果是将m_llMarkers[0]的第 62 位设置为 0,其他位保持不变。m_llMarkers[0] = ...:将上一步的结果赋值给m_llMarkers数组的第一个元素。
总结:
这行代码通过位运算将 m_llMarkers 数组的第一个元素的第 62 位设置为 0,相当于从 m_llMarkers[0] 中移除 BIT_CHARGE_CONVERTED 标志。
原文地址: https://www.cveoy.top/t/topic/okYX 著作权归作者所有。请勿转载和采集!