从基数 10 转换为具有适当符号扩展的任意基数
Convert from base 10 to an arbitrary radix with proper sign extend
我想知道是否有一种正式的方法可以在转换时在任意基数中正确地签署扩展基数 10 数字。例如,如果我在基数 10 中有 -256,我将如何在不假设结果的固定长度的情况下正确地对基数 7(或基数 n)中的结果进行符号扩展。
来自维基百科:
The radix complement of an n digit number y in radix b is, by definition, bn − y
https://en.wikipedia.org/wiki/Method_of_complements#Numeric_complements
当我们将数字符号扩展为 n+1
位时,该值的新表示形式为
bn+1 − y = b*bn − y = bn − y + (b-1)bn
因为 b-1 是 基数 b 和 bn[ 中的最大数字=55=] 包含 n 个最低有效位全为 0(即 100..0,基数 b 中有 n 个零),(b- 1)bn 只是一个带有 b-1
后跟 n 个零的数字。剩下的部分(bn − y)是旧的n位基数补码n
所以基本 b
中的 1 位符号扩展只是将数字 b-1
添加到旧值的左侧。通过数学归纳法,这将适用于 n
的任何值
例如:
-256 以 10 为基数:
- 3位数:744
- 4位数字:9744
- 5位数字:99744
-256 以 7 为基数:
我想知道是否有一种正式的方法可以在转换时在任意基数中正确地签署扩展基数 10 数字。例如,如果我在基数 10 中有 -256,我将如何在不假设结果的固定长度的情况下正确地对基数 7(或基数 n)中的结果进行符号扩展。
来自维基百科:
The radix complement of an n digit number y in radix b is, by definition, bn − y
https://en.wikipedia.org/wiki/Method_of_complements#Numeric_complements
当我们将数字符号扩展为 n+1
位时,该值的新表示形式为
bn+1 − y = b*bn − y = bn − y + (b-1)bn
因为 b-1 是 基数 b 和 bn[ 中的最大数字=55=] 包含 n 个最低有效位全为 0(即 100..0,基数 b 中有 n 个零),(b- 1)bn 只是一个带有 b-1
后跟 n 个零的数字。剩下的部分(bn − y)是旧的n位基数补码n
所以基本 b
中的 1 位符号扩展只是将数字 b-1
添加到旧值的左侧。通过数学归纳法,这将适用于 n
例如:
-256 以 10 为基数:
- 3位数:744
- 4位数字:9744
- 5位数字:99744
-256 以 7 为基数: