c# 的取负数_在C#中将正数转换为负数

怎么样

myInt = myInt * -1

int myNegInt = System.Math.Abs(myNumber) * (-1);

int negInt = -System.Math.Abs(myInt)

同样的,你做任何事情都是消极的:在它前面放一个负号。

var positive = 6; var negative = -positive;

请注意所有回复的人

- Math.Abs(myInteger)

要么

0 - Math.Abs(myInteger)

要么

Math.Abs(myInteger) * -1

作为一种保持负数的负面方式,并转正面负面的方式。

这种方法有一个缺陷。 它不适用于所有整数。 Int32types的范围是从“-2 31 ”到“2 31 – 1”。 这意味着还有一个“负面”的数字。 因此, Math.Abs(int.MinValue)抛出一个OverflowException 。

正确的方法是使用条件语句:

int neg = n < 0 ? n : -n;

这种方法适用于“全部”整数。

简单的方法:

myInt *= -1;

int negInt = 0 - myInt;

或保证是负面的。

int negInt = -System.Math.Abs(someInt);

要切换整数的符号,只需使用符号运算符:

myInt = -myInt;

无论原始值是否定的,要使其为负数,首先使用Abs方法:

myInt = -Math.Abs(myInt);

编辑:这是错误的积极的投入…我犯了一个错误,忘记-x(2s-Complement值)中的其余位是他们在+ x的价值“相反”,不一样。 所以简单地改变符号位将不适用于正数。

我会在这里留下来的目的…

或者棘手的方式(我认为)…

int y = x | 〜int.MaxValue;

cause int.MaxValue is 0111 1111 1111 1111 1111 1111 1111 1111

所以

~int.MaxValue is 1000 0000 0000 0000 0000 0000 0000 0000

因此任何int32或者将会在符号位置1(使其为负值),并保留所有其他位相同的…

编辑:实际上,由于1000 0000 0000 0000 0000 0000 0000 0000实际上是Minvalue,这也应该工作:

int y = x | int.MinValue; // or, to do it to itself, x |= int.MinValue;

只是为了更好玩:

int myInt = Math.Min(hisInt, -hisInt); int myInt = -(int)Math.Sqrt(Math.Pow(Math.Sin(1), 2) + Math.Pow(Math.Cos(-1), 2)) * Math.Abs(hisInt);

只是为了好玩:

int negativeInt = int.Parse(String.Format("{0}{1}", "-", positiveInt.ToString()));

更新 :这种方法的美妙之处在于,您可以轻松地将其重构为exception生成器:

int negativeInt = int.Parse(String.Format("{0}{1}", "thisisthedumbestquestioninstackoverflowhistory", positiveInt.ToString()));

long negativeNumber = (long)positiveInt - (long)(int.MaxValue + 1);

没有人说它必须是任何特定的负数。

尽pipe我在这里参加派对的时间已经晚了,但是我还是会用硬件时间里的一些有用的技巧加以注意。 所有这些都假设2是有符号数的恭维表示。

int negate = ~i+1; int positiveMagnitude = (i ^ (i>>31)) - (i>>31); int negativeMagnitude = (i>>31) - (i ^ (i>>31));

也许这个?

int n; .... some coding.... n = n<=0? n:0-n;

乘以-1。

int myInt = - System.Math.Abs(-5);

我使用myInt = -myInt;

如此简单和容易

如果你想只有积极的

myInt = myInt>0 ? myInt : -myInt;

更简单的方法a = -a会帮忙

将数字从正数转换为负数,或将负数转换为正数:

public static decimal Reverse(this decimal source) { return source * decimal.MinusOne; }

X=*-1可能不适用于所有的编译器…因为它读取的是一个“相乘”'SUBTRACT'1而不是NEGATIVE更好的是X=(0-X) ,[这是与X-=X ]

使用二进制,并删除负责负号的最后一位。

或者使用二进制或将符号添加到数据types。

这个soln听起来可能荒谬和不完整,但我可以保证这是最快的方法。

如果你不试试我发布的post,可能会看起来很糟糕:D

例如对于int:

Int是32位数据types,所以最后一位(第32位)确定符号。

并且在32位中有一个值为0,其余为1.它会将负号转换为+ ve。

正好相反,或者在32位中有1位,其余为0。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值