求教高手计算方法,谢谢!!
请各位高手帮助看看附图里的计算方法,我看不明白:
附图:http://www.5ivb.net/club/dispbbs.asp?boardid=1&id=18027&star=1#12977
假设数据为FF FF FF 40
第二字节的高位的值为((15-8)*2+8)*(2^-2)=5.5,第二字节的低位值为(15*2)*(2^-6)=0.46875,第三字节的高位的值为(15*2)*(2^-10)=0.02929
后面的值太少可以不用计算,但在编程时还是要计算的假设数据为11 11 11 41
则,第一字节41的值为8,第二字节的高位的值为1*(2^0)=1,第二字节的低位值为1*(2^-4)=0.0625,第三字节的高位的值为1*(2^-8)=0.0039
后面的值太少可以不用计算,但在编程时还是要计算的,否则不好编。
以上合计为9.0664,4舍5入为9.07。
假设数据为FF FF FF 40
第二字节的高位的值为:((15-8)*2+8)*(2^-2)=5.5 
第二字节的低位值为(15*2)*(2^-6)=0.46875
第三字节的高位的值为(15*2)*(2^-10)=0.02929
请教为何这样算,还请高手帮助分析一下,谢谢!!!!
假设数据为11 11 11 41
第二字节的高位的值为1*(2^0)=1
第二字节的低位值1*(2^-4)=0.0625
第三字节的高位的值为1*(2^-8)=0.0039请教为何这样算,还请高手帮助分析一下,谢谢!!!!
另请帮助写一下以下几个数据的计算方式:
44 B1 A7 53        42 F2 46 24
4C CE 5B 26

解决方案 »

  1.   

    要注册才能看到http://www.5ivb.net/club/dispbbs.asp?boardid=1&id=18027&star=1#12977所以还要麻烦你说清楚你是想在vb中进行位运算?(bit operation)那么以下信息应该对你有所帮助在c/c++中,有的常用的但vb中没有的位运算是 shift!例如 int a = 111 (二进制,注:这不是合法的语句,但为了说明方便)
    则 a<<1 左移位 得到结果 111000000000 00000000 00000000 00000111(32位整数) 
    a<<1
    00000000 00000000 00000000 00001110 (整体左移一位)
    vb中没有这个运算符,但观察移位的效果,相当与
    00000000 00000000 00000000 00000111 乘以 2
    所以在vb中 *2代表左移位运算
    类似的,可以定义右移位例如
    152(十进制) = 00000000 00000000 00000000 10011000 (二进制,补足32位)
    要知道从右边数过来第四位到底是1还是0,怎么办?
    首先,生成一个 mask = 00000000 00000000 00000000 00001000 = 2^3 = 2^(4-1)
                   152  = 00000000 00000000 00000000 10011000
    两者进行and运算(vb中有And运算符)
    得                    00000000 00000000 00000000 00001000
    右移3位
    得                    00000000 00000000 00000000 00000001
    所以右边数过来第四位是1在vb中没有右移位这个运算符,但可以用 除移8代替(2^3)
    事实上,乘以 2^n 就是左移n位 除以2^n 就是右移n位
                            
      

  2.   

    无论如何,一旦涉及到“位(bit)”这个概念,就不应该出现小数。凡是 大于0小于1就认为结果是0,否则1总而言之,凡是涉及位的运算,还是以二进制进行思维好(位这一概念本来就根源于二进制)
    这也说明了为什么计算机内部用二进制。
      

  3.   

    问题我描诉不出来,请您用:
    注册名:hh88855
    密 码:35773437
    登陆http://www.5ivb.net/club/dispbbs.asp?boardid=1&id=18027&star=1#12977
    请您帮助,谢谢!!!!
      

  4.   

    首先,这是个什么问题?没有上下文,弄不清原文的意思。
    这里的“字节”和“位”到底指什么?反正肯定不是计算机科学中的 byte and bit或者这根本就是一种规定?
      

  5.   

    我不明白的是:
    假设数据为FF FF FF 40
    第二字节的高位的值为:((15-8)*2+8)*(2^-2)=5.5    :::(8;8;(2^-2))
    第二字节的低位值为(15*2)*(2^-6)=0.46875         :::((2^-6))
    第三字节的高位的值为(15*2)*(2^-10)=0.02929      :::(*2;(2^-10))假设数据为11 11 11 41
    第二字节的高位的值为1*(2^0)=1                   :::(2^0)
    第二字节的低位值1*(2^-4)=0.0625                 :::(2^-4)
    第三字节的高位的值为1*(2^-8)=0.0039              :::(2^-8)
    求教引号后数值是如何取得的,谢谢!!!!!!!!!
    另请用
    1252493395(44 B1 A7 53)计算出应为1421228
    1123173924(42 F2 46 24)计算出应为121136 1288592166(4C CE 5B 26)计算出应为128800
    3个数据帮助做一下事例,谢谢!!!!!!!!!!!
      

  6.   

    首先不要管怎样算,
    首先要弄清楚的是
    “第二字节的高位”到底指的是什么!
    FF FF FF 40的第二字节毫无疑问是 FF
    FF = 11111111 
    然而,这里的高位指的是
    11111111 中的那一部分呢?
    或者根本不是bit的意思