1、需要计算每个态的VoltageJudge,此处作用是判断1->0,0->1翻转。具体操作是比较每个态的格雷码与上一个态的格雷码的大小,A<ER,VoltageJudge[A]=0,B>A,VoltageJudge[B]=1
2、cal_flag计算方式。将当前态的格雷码,对应当前态所属的pagetype位置置为-1。例如A(属于LP)的graycode为[1,0,1](LP,MP,TP顺序),则变为[-1,0,1]
3、参考page的选择。选择除当前态所属pageType的其他pageType,且相距最近的态
3、for page_data,cal_flag in zip(page_data_list,VoltagePTypeJudge_list):
if cal_flag==-1:
if VoltageJudge:
count&=page_data&(~next_page) #1->0
else:
count&=(~page_data)&next_page #0->1
elif reference_flag:
if cal_flag==-1:
count&=page_data
elif cal_flag==0:
count&=(~page_data)
return bin(count).count("1")