2013-08-26 24 views
3

我需要操纵一个无符号整数乘以-1。如何在SELECT上将无符号整数乘以-1?

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

+1

随机?或者'MAX - x + 1'? –

+4

是不是一个unsigned int的整点,它不能是负的?或者我是愚蠢的? – StephenTG

+1

是的,这似乎不太可能是* random *。这听起来像是设计。无论哪种方式,我想你需要将结果转换为无符号整型。你有没有尝试类似'CAST(fieldname * -1,UNSIGNED)'? –

回答

1

如果你在期待值的负的无符号整型变量,你不会得到它,因为数据类型是无符号。它只能保持+ ve值。

对于数据类型INT:符号范围是-2147483648到2147483647无符号的范围是0到4294967295

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

将结果转换或转换为带符号的int以获取所需内容。