lu741170644 2015-03-25 07:21 采纳率: 0%
浏览 2104

VB中long型转Bytes型代码求解

请问下面这段代码怎么分析啊?看了半天没看懂!
Bytes = (Number And &H7F000000) \ &H1000000 Or (((Number And &H80000000) <> 0) And &H80)

  • 写回答

1条回答 默认 最新

  • danielinbiti 2015-03-25 07:59
    关注

    vb中long是32位,如果2进制表示就是4个字节(1111 1111),
    H7F000000二进制是01111111 00000000 00000000 00000000 ,为了防止溢出,最高位设置成0。and操作后,就剩最高位的8位了。但第8位是不准确的。
    H1000000二进制是1 00000000 00000000 00000000 ,除法相当于移位,也就是剩下最高位8位
    &H80000000二进制10000000 00000000 00000000 00000000,and操作是检测最高位是0还是1
    &H80二进制是10000000,and操作检测8位中最高位

    (Number And &H7F000000) \ &H1000000是求出最高8位。
    (((Number And &H80000000) <> 0) And &H80)后面这部分总体来说就是最高位如果是0则结果0,如果最高位是1,则结果是1
    两组or以下,结果就是long型的最高8位数,为什么or一下,还记得前面说的第8位不准确吧

    评论

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题