机器温度处理方式:
十六位数据中,高4位为符号位,0表示正数,1表示负数。
中间8位为数据位,正数时,数据为原码表示的十六进制数据;负数时,数据需进行按位取反操作,得出实际数据。
低四位为小数部分(未用)。
例如:
所接收的两组机器温度数据为:02H 53H 和 F8H 74H
第一组为正数,二进制数据为0000001001010011,取中间8位,得十进制数据为37,则温度为37度。
第二组为负数,二进制数据为1111100001110100,中间8位按位取反,得十进制数据为120,则温度为120度。
帮帮忙,这个如何处理?如何取出这个数的高四位?谢谢

解决方案 »

  1.   

    用这段代码处理:dim iNumTempe&iNumTempe = &HF874iNumTempe = (iNumTempe And &HFFFF&)\16&
    '下面是对正负数的判断和转换
    if ((iNumTempe And &HF00)=&HF00) then
        iNumTempe = (iNumTempe Xor 4095)\16
    else
        iNumTempe = iNumTempe \ 16
    endif
    '输出
    debug.print iNumTempe
      

  2.   

    忘记了,前面已经去掉小数部分了。
    这样:dim iNumTempe&iNumTempe = &HF874iNumTempe = (iNumTempe And &HFFFF&)\16&
    '下面是对负数的判断和转换
    if ((iNumTempe And &HF00)=&HF00) then  iNumTempe = iNumTempe Xor 4095
    '输出
    debug.print iNumTempe