【发布时间】:2013-01-23 18:40:35
【问题描述】:
我是一名高中生,目前正在学习 Delphi XE3。我们正在学习 BIT 操作。我们有一个任务,虽然我已经阅读了很多关于该主题的内容并了解在 Bits 和 SHL/SHR 中存储信息的整个过程,但我很难理解如何在 Delphi 中执行此过程。
作业如下:
Decimal Hexidecimal Binary
1 0x0001 0000000000000001
2 0x0002 0000000000000010
4 0x0004 0000000000000100
在 XML 文件中传递一个整数值来标识选项集。例如。如果我想发送选项 1 和选项 2,我会添加 1+2=3。我会发送 3 作为数字来指定选项 1 和 2 为真。
在客户端,二进制值为 0000000000000011 = 3
根据我的阅读,我需要使用面具,但我不明白如何做到这一点。我如何在 Delphi 中使用掩码来获取 True 或 False 的各个值。
我尝试在常规 Integer 变量中执行此操作,但它总是被视为 Integer,结果非常奇怪。如果我将整数转换为二进制字符串表示并遍历字符,则结果是正确的,但我假设我不应该对字符串执行此操作。任何帮助或示例将不胜感激。谢谢。
【问题讨论】:
-
请你问一个具体的问题。这里没有。
-
我想了解如何读取是否从整数值设置了特定位以及如何设置特定位。如果值为 1 + 4 = 5,那么我如何读取右侧的 1 和 3 位是否设置或等于 True。
-
嗯,我们通常从 0 开始对位进行编号。因此,您将测试位 0 和 2。为此,您为位 0 编写
(x and 1)<>0,为位 2 编写(x and 4)<>0。您应该更直接地问这个问题。 -
X 是常规整数还是字节变量?
-
@DavidHeffernan,谢谢。我将 SHL 和 SHR 用于什么用途?
标签: delphi delphi-xe2 bit-manipulation