Delphi按位运算问题
F0 7D 00 C8 00 ->11110000 01111101 00000000 11001000 00000000
前4位1111=15表示,接下来的30位用于存储2个值,每个值15位, a=000001111101000=1000,b=000001100100000=800(有符号位值)
1111000001111101000000001100100000 用“000000”填充,因此它将是 5 个字节。
如何制作这样一个delphi程序来改变a&的值? b、
过程setBit(a,b:Integer);
F0 7D 00 C8 00
->11110000 01111101 00000000 11001000 00000000
First 4 bits 1111=15 means, next 30 bits are used to store 2 values,15 bits each,
a=000001111101000=1000,b=000001100100000=800 (Signed-bit value)
1111000001111101000000001100100000 is paded with '000000' so it'll be 5 bytes.
How to make such a delphi procedure to change the value a & b,
procedure setBit(a,b:Integer);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我猜你使用LSB存储顺序。
试试这个:
它将更改 dest 指向的 8 个字节值,将数据存储到前 5 个字节中。
I guess you use LSB storage order.
Try this:
It will change the 8 bytes value pointed by dest, storing the data into the first 5 bytes.
设置位的最简单方法是使用汇编指令 BTS。类似的东西(未经测试)
应该可以工作。请参阅http://www.intel.com/Assets/PDF/manual/253666。 pdf
The easiest way to set a bit is to use the assembler instruction BTS. Something alike (not tested)
should work. See http://www.intel.com/Assets/PDF/manual/253666.pdf