如题:
var
  iB: Byte;
  i:integer;
  iB:=i mod 64 div 8;iB值会用什么现象?你怎样看出来的?这个什么时候用到?

解决方案 »

  1.   

    Edit2.Text := inttostr(strtoint(edit1.text) div 8);
    Edit2.Text := inttostr(strtoint(edit1.text) mod 64);测试一下 你就清楚了
      

  2.   

    这实际上就是取i的bit5、bit4、bit3三位,有什么用呢?没有具体的上下文,谁知道啊?
      

  3.   

    已知:
      ibyte:Byte;
      ibyte:=(01XXX010)//这里用二进制表示了,其中XXX代表可变部分,即0-7,我想知道通过计算ibyte得到它对应的中间的0-7的值,怎么弄?
      

  4.   

    mod 取余數
    div 取整數
      

  5.   

    i mod 64 得到的结果是0~63,再div 8,结果是0~7
    相当于 i and 3f shr 3******** ******** ******** **XYZ***
    00000000 00000000 00000000 00111111
    -----------------------------------
    XYZ
      

  6.   

    不就是你问的
    先mod 64 再div 8……
      

  7.   

    楼主需要注意的是,这两种方法是不完全等价的,相反,更应该使用位操作。比如 i := -100(FFFFFF9Ch,11111111111111111111111110011100b),那 i mod 64 div 8的结果是 -4(FFFFFFFCh,11111111111111111111111111111100b)并不是你所期望的3(3h,011b)
      

  8.   

    10楼所言极是。Delphi的shr是做逻辑右移操作,与被操作数是有符号数还是无符号数无关,这一点与c的>>操作不同。不知楼主需要的是哪种操作?