upload datalab

This commit is contained in:
18218461270@163.com 2025-07-23 00:55:23 +08:00
parent 69ccb5bb4f
commit 9f3ddf28d7

View File

@ -4,7 +4,7 @@
## `isTmax` ## `isTmax`
$Tmax$ 的位表示为 `011...11`。注意到 `x+1==~x` 当且仅当 $x=-1$ 或 $x=Tmax$。利用该性质,并判断是否为 $-1$。 $Tmax$ 的位表示为 `011...11`。注意到 `x+1==~x` 当且仅当 $x=-1$ 或 $x=Tmax$。利用该性质,并判断是否为 $-1$。
## `allOddBits` ## `allOddBits`
每次将 $w$ 位的整数 $x$ 分成 $\frac{w}{2}$ 位的两段,将两者按位与得到新的 $x$,进行该操作 4 次后 $x$ 位数为 2检验第 1 位(从 0 开始编号)是否为 `1` 使用“折半递归法”,参见作业 2.65
## `negate`, `isAsciiDigit` ## `negate`, `isAsciiDigit`
略。 略。
## `conditional` ## `conditional`
@ -14,10 +14,10 @@ $Tmax$ 的位表示为 `011...11`。注意到 `x+1==~x` 当且仅当 $x=-1$ 或
## `isLessOrEqual` ## `isLessOrEqual`
核心思路是判断 `y - x = y + ~x + 1` 的符号位。需要处理一些细节以规避溢出带来的错误。 核心思路是判断 `y - x = y + ~x + 1` 的符号位。需要处理一些细节以规避溢出带来的错误。
## `logicalNeg` ## `logicalNeg`
采用 `allOddBits` 方法,略 “折半递归法”
## `howManyBits` ## `howManyBits`
对于正数 $x$,所求为最大的 $b$ 使得 $x$ 的第 $b-2$ 位为 `1`,而对于负数 $x$,则是最大的 $b$ 使得 $x$ 的第 $b-2$ 位为 `0`。通过令 `x = x ^ ((x >> 31) << 31)`,我们得以仅用考虑 $x$ 为正数的情况。 对于正数 $x$,所求为最大的 $b$ 使得 $x$ 的第 $b-2$ 位为 `1`,而对于负数 $x$,则是最大的 $b$ 使得 $x$ 的第 $b-2$ 位为 `0`。通过令 `x = x ^ ((x >> 31) << 31)`,我们得以仅用考虑 $x$ 为正数的情况。
之后亦可采用 `allOddBits` 方法,略 之后使用“折半递归法”
## `floatScale2`,`floatFloat2Int`,`floatPower2` ## `floatScale2`,`floatFloat2Int`,`floatPower2`
仔细分类即可。 仔细分类即可。