3

我需要操作一个无符号整数乘以-1。

当我尝试它只是返回一个围绕最大可表示值的随机值。

4

2 回答 2

2

在查询中转换结果。

SELECT CAST( fieldname * -1 AS SIGNED ) FROM ...
-- or
SELECT CONVERT ( fieldname * -1, SIGNED ) FROM ...

http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html

于 2013-08-26T19:47:15.053 回答
1

如果您期望 unsigned int 变量中的值是负数,您将不会得到它,因为数据类型是unsigned。它只能保存 +ve 值。

对于数据类型int:有符号范围是 -2147483648 到 2147483647。无符号范围是 0 到 4294967295。

乘以 -1 会发生,结果也将是相同的数据类型(无符号整数),其 MSB(最高有效位)将为 1 以表示负数。

将结果转换或转换为带符号的 int 以获得您想要的。

于 2013-08-26T19:49:03.953 回答