【发布时间】:2022-01-09 23:42:15
【问题描述】:
我有以下代码将 DEC 转换为 BIN,然后将其反转,然后再转换回 DEC。
当我传递奇数时,我得到了正确的结果,但对于偶数,它不准确。
有人可以帮我解决我做错了什么吗?
function mirror_bits(n) {
var NumFromInvNum = parseInt(n.toString(2).split("").reverse().join(""), 2);
return NumFromInvNum;
}
console.log(mirror_bits(2031768448));
console.log(mirror_bits(3105510272));
console.log(mirror_bits(622482304));
console.log(mirror_bits(3357168512));
我看到问题的示例值是
输入 = 2031768448 |预期输出 = 30038174 -- 不工作
输入 = 3105510272 |预期输出 = 30038173 -- 工作中
输入 = 622482304 |预期输出 = 30038180 -- 不工作
输入 = 3357168512 |预期输出 = 30038035 -- 工作中
输入 = 1562006400 |预期输出 = 30038202-- 不工作
输入 = 3709490048 |预期输出 = 30038203-- 不工作
【问题讨论】:
-
感谢您制作代码 sn-p,但它什么也没做。另外,函数中的局部变量名似乎有问题。
-
好的,已编辑问题。
-
您的预期输出表明您将数字视为 32 位数字。但是,如果输入小于
2**31,则不要在左侧用额外的零填充二进制转换的结果,以使其达到32的长度。这就是为什么您的代码适用于2**31或更大的输入,但不适用于小于2**31的值。 (作为一种极端情况,考虑一下如果您的输入是1会发生什么。从您的预期输出推断,您希望在这种情况下的输出是2147483648,但是您的代码将创建并反转一个字符串 @987654328 @,再次输出1。) -
您能帮忙修改我的代码以适应这种情况吗?
-
你没有传递奇数,你所有的输入都是偶数。
标签: javascript node.js binary decimal data-conversion