【发布时间】:2020-06-17 09:44:41
【问题描述】:
如何将数字从无符号转换为有符号?
签名:-32768 到 32767 无符号:0 到 65535
我正在用 JavaScript 解决问题。情况是我有一个数字,例如从 0 到 65535,我想将其转换为合理的有符号值。
例如:65535 应该变成 -1。
请不要使用任何与位相关的运算,而是使用算术运算。
假设我们使用足够大的数据类型,我想这应该与语言无关。
更新: 根据答案进一步实施:
function convertWordToShort(ival) {
if (isNaN(ival) === false) {
if (ival > 32767) {
ival = ival - 65536;
}
}
return ival;
}
function convertShortToWord(ival) {
if (isNaN(ival) === false) {
if (ival < 0) {
ival = ival + 65536;
}
}
return ival;
}
function convertIntToDWord(ival) {
if (isNaN(ival) === false) {
if (ival < 0) {
ival = ival + 4294967296;
}
}
return ival;
}
function convertDWordToInt(ival) {
if (isNaN(ival) === false) {
if (ival > 2147483647) {
ival = ival - 4294967296;
}
}
return ival;
}
【问题讨论】:
-
我不太明白你的规则,为什么 65535 = -1?
-
那是因为如果你在 C 编程语言中进行转换,这正是结果。 UInt16 x = 65535;变量 y = (Int16)x; // y = -1
-
不同的语言有自己的规则来处理这些情况。
-
@Matthias 您的“C”语法非常奇特。 :)
-
它的 C 但我猜最后有一个 # 。无符号短 x = 65535;短 y = (short)x//y=-1
标签: javascript jquery c