精华内容
下载资源
问答
  • c# – 反转对象或使用减号将其标记为负数
    2021-02-06 14:39:06

    是否可以反转对象或将其标记为否定?

    这就是我想要实现的目标:

    DateTime.Now.Add(-TimeUnits.Week)

    这应该返回当前日期时间减去7天.

    所以我必须在Add方法中检测传递的对象是否为负数!

    我看过一个结构,但我对它们的体验太少,无法判断这是否可能!

    目前,我有一个枚举,当然非常有限.我没有特别绑定枚举,所以它可以是任何其他对象!

    我的枚举TimeUnits:

    public enum TimeUnits

    {

    Once = 0,

    Day = 1,

    Week = 2,

    Month = 3,

    Quarter = 4,

    Year = 5

    }

    我在DateTime上有一个扩展方法,我想将一个对象传递给方法添加如下:

    private static DateTime? Add(this DateTime current, TimeUnits unitOfTime)

    {

    switch (unitOfTime)

    {

    case TimeUnits.Once:

    return null;

    case TimeUnits.Day:

    return current.AddDays(1);

    case TimeUnits.Week:

    return current.AddDays(7);

    case TimeUnits.Month:

    return current.AddMonths(1);

    case TimeUnits.Quarter:

    return current.AddMonths(3);

    case TimeUnits.Year:

    return current.AddYears(1);

    default:

    throw new ArgumentOutOfRangeException("unitOfTime");

    }

    }

    最佳答案 严格来说,枚举类型只是为数字定义命名常量的一种方式.换句话说:表达式 – ((int(TimeUnit.Week)只是以一种对人类更具可读性的方式编写文字-2的另一种方式.

    虽然技术上完全可以“否定”这样的值(因为它确实是编译器的int),但是你不应该这样做.从概念上讲,这是一个可怕的想法,它将完全滥用枚举的概念. – 将简单常量用于您要执行的操作,或者,如果可能,请定义Subtract()方法.

    更多相关内容
  • C#中将正数转换为负数

    千次阅读 2021-03-22 08:58:28
    更简单的方法a = -a会帮忙 将数字从正数转换为负数,或将负数转换为正数: public static decimal Reverse(this decimal source) { return source * decimal.MinusOne; } X=*-1可能不适用于所有的编译器…因为它...

    怎么样

    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。

    展开全文
  • C#文本框中的负数

    2020-12-22 08:55:04
    尝试这个:Regex reg = new Regex(@"^-?\d+[.]?\d*$");private void textBox1_KeyPress(object sender, KeyPressEventArgs e){if (char.IsControl(e.KeyChar)) return;if (!reg.IsMatch(textBox1.Text.Insert...

    尝试这个:

    Regex reg = new Regex(@"^-?\d+[.]?\d*$");

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

    {

    if (char.IsControl(e.KeyChar)) return;

    if (!reg.IsMatch(textBox1.Text.Insert(textBox1.SelectionStart, e.KeyChar.ToString()) + "1")) e.Handled = true;

    }

    对于keyboardP的建议,我添加了这段代码以完全防止非数字值,我认为您应该尝试TextBox.ShortcutsEnabled = false;.因为我认为用户不需要任何形式的复制和粘贴数字数据.

    Regex reg = new Regex(@"^-?\d+[.]?\d*$");

    bool textChangedByKey;

    string lastText;

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

    {

    if (char.IsControl(e.KeyChar)) return;

    if (!reg.IsMatch(textBox1.Text.Insert(textBox1.SelectionStart, e.KeyChar.ToString()) + "1"))

    {

    e.Handled = true;

    return;

    }

    textChangedByKey = true;

    }

    private void textBox1_TextChanged(object sender, EventArgs e)

    {

    if (!textChangedByKey)

    {

    if (!reg.IsMatch(textBox1.Text))

    {

    textBox1.Text = lastText;

    return;

    }

    }

    else textChangedByKey = false;

    lastText = textBox1.Text;

    }

    我尝试过使用Undo()方法和一些重设SelectedText的方法,但是这样做有些不好,即使上面的方法也没有带来很好的视觉效果(尝试将文本粘贴到文本中时,您可以看到文本发生了变化并恢复为有效值)数字文本框).

    展开全文
  • 但是C#和C ++都朝着0取整。所以我想我需要一个DivideDownward()方法。 我可以用几行代码来测试否定性,等等,但是我的想法似乎很笨拙。 因此,我想知道我是否缺少某些东西,以及您是否有一种"优雅"的方式可以将负除...

    似乎每当我将负整数除以正整数时,我都需要将其舍入(向-inf方向),而不是朝0方向取整。但是C#和C ++都朝着0取整。

    所以我想我需要一个DivideDownward()方法。 我可以用几行代码来测试否定性,等等,但是我的想法似乎很笨拙。 因此,我想知道我是否缺少某些东西,以及您是否有一种"优雅"的方式可以将负除法向下舍入。

    举例说明所需的行为。

    例? 好,我需要(-5)/ 3才能产生-2,而不是-1。 但是我真的不认为该示例为(IMO)明确的问题添加了任何内容。

    Whenever I divide a negative int by a positive int, I need it to round down.

    妈的,不是吗?克努斯(Knuth)写道,为什么这是正确的处理方法,但是我们仍然使用传统的整数硬件。

    如果您可以承受精度损失,最简单,最干净的方法是将32位整数转换为64位double,并在将商返回时使用FP舍入模式向负无穷大舍入。到整数。当今的浮点单位非常快,实际上可能比整数单位要快。当然,您必须进行测量。

    如果您需要完整的64位整数精度,那么作为编译器编写者,我可以通过执行两个条件分支来解决此问题,以便最终划分出幅度,然后获得正确的符号。但这是前一阵子,当时条件分支的价格比分红便宜。在当今的硬件上,我必须先进行实验,然后才能推荐一些东西。

    原则上,您可以使用旧的英特尔80位浮点数来在64位整数上使用浮点数技巧,但这是非常不可移植的,我不相信英特尔会一直保持该单位的快速发展。如今,浮点速度以SSE为单位。

    寻找其他技巧的地方包括汉克·沃伦(Hank Warren)的书《黑客的喜悦》(Hacker's Delight)(我的著作正在编写中)和用于标准ML的MLton编译器,该编译器需要整数除法以向负无穷大舍入。

    无论做什么,当您适应它时,如果使用的是C ++或C99,请将除法例程粘贴到.h文件中,并将其设置为static inline。这样,当您的解决方案对于5年内交付的新型Whizbang硬件而言不是最理想的解决方案时,您就可以更改它。

    我以为int32-> double不会失去任何精度。但是我只是优化了一些fp代码,其中fstp ops(接近0的数字)占用了我的大部分CPU时间。也许无关紧要,但是我暂时对不必要的fp感到厌烦。 ;)

    您可以通过执行以下操作摆脱任何分支:

    inline int DivideRoundDown(int a_numerator, int a_denominator)

    {

    return (a_numerator / a_denominator) + ((a_numerator % a_denominator) >> 31);

    }

    假设b始终为正,这是一个廉价的解决方案:

    inline int roundDownDivide(int a, int b) {

    if (a >= 0) return a/b;

    else return (a-b+1)/b;

    }

    如果您想以相对简洁的方式仅使用整数来编写此代码,则可以编写以下代码:

    var res = a / b - (a % b < 0 ? 1 : 0);

    这可能会编译成很多指令,但仍可能比使用浮点数更快。

    OP没有提到C,但是仍然值得注意的是,由于实现定义的百分比,因此不能保证C89可以正常工作。我认为您可以通过更改为a % b != 0来概括它。

    @Matthew:那很棘手。但是,如果a % b返回的数字大于零,则需要返回0(这就是为什么我在C#中需要

    @汤姆,好点。我在想a是否定的。所以我想一个广义的版本是:a b - (a < 0 && a % b != 0 ? 1 : 0)

    我认为给出的答案取决于实现,但是Matthews的修改显得简洁可靠。如果是答案,请选中它。谢谢大家)!

    @Matthew:实际上,这保证了C89和C99都可以工作-即使和%返回的实际值是为负操作数定义的实现,它们也要求(ab)*b + a%b == a除非b == 0。如果内建/朝-inf而不是0舍入,则您的版本将失败。

    @Chris:至少由MS文档,在C#和C ++中,/都朝0取整,而不是-inf。

    @克里斯,你说得对。我忘记了在C89中也是实现定义的。

    它实际上生成无分支的代码。缺点是,当b <0时,它四舍五入为+ inf。

    如果b为负,则产生不正确的结果。例如,-1 -2正在计算-1,而不是0。

    @ Mr.Smith:我发布了一个也适用于负b的版本。

    警告:此帖子产生错误的输入a = -1的结果。请参阅其他答案。 -凸轮

    这可能就是您所谓的" kludgey",但这是我想出的;)

    int divideDown(int a, int b){

    int r=a/b;

    if (r<0 && r*b!=a)

    return r-1;

    return r;

    }

    在if语句中,我输入r <0-但是我不确定这是否是您想要的。您可能希望将if语句更改为

    if (a<0 && b>0)

    这与您的描述"似乎就像我将负整数除以正整数一样"。

    这就是我所说的克鲁格,但是我什么都不知道。特别是对于r * b!= a测试,它可能比a%b!= 0更有效,并且证明与提供的单行表达式相比,多余的代码行是合理的,我将此授予"答案"。

    我对此不确定,但不应该是if (r<=0 && r*b!=a)吗?

    它的后果更糟-如所写,这会为a = -1产生错误的答案,如果将其更改为r <= 0,那么对于a = 1会产生错误的答案。这个答案不应该被接受;它产生不正确的结果。

    无法删除,因为它是可接受的答案。将尝试使用解决方案进行修复,但在此之前将进行警告编辑。感谢您发现错误!

    @Cam我认为即使已经接受您也可以删除自己的答案。实际上,我认为这样做有一些自我批评的标志。也许不吧。

    @csj:"您无法删除此接受的答案"

    Math.Floor((double)a/(double)b)

    如果您需要将其作为整数,请在之后进行转换

    (int)Math.Floor((double)a/(double)b)

    decimal是最慢的数字类型,在这里不添加任何内容。 float或double更合适。

    您也不需要强制转换分母,只需转换分子。

    @Matthew Flaschen:我正在考虑。我没有意识到他所说的int是int32。如果插入a和b的无关值[分别为Int64.MaxValue-1和Int64.MaxValue],则使用double会因为浮点错误而中断,并且您将得到1而不是0。答案已固定。

    这个答案是可行的,但是鉴于fp的性能成本,我认为我的"笨拙"方法思想没有任何改善。

    许多编程语言,包括较早的C和C ++标准,都保证了除法规则,即

    a = b * (a / b) + a % b

    即使a/b和a%b的确切值未定义。 (现在它们是用C和C ++定义的。)可以使用以下代码(等效于)以下代码来利用该语言在许多语言和平台中计算所需的结果:

    int divF(int a, int b) { return a / b - (a % b < 0); }

    这是@TomasPetricek的答案中的版本。但是,这仅适用于b > 0!

    以下代码适用于任何b != 0:[1]

    int sign(int x) { return (x > 0) - (x < 0); }

    int divF2(int a, int b) { return a / b - (sign(a % b) == -sign(b)); }

    但是,四舍五入的划分(又称地板划分,又称Knuth划分)并不总是可取的。有人认为[2]欧几里得除法是最普遍有用的除法。对于b > 0,它向下取整,对于b < 0,它向上取整。它具有一个很好的属性,即对于所有a,b,兼容定义的余数的值始终为非负值,而与它们的符号无关。此外,它与用于2的幂的除数的二进制补码机上的移位同时发生。是的,它的计算速度也更快:

    int divE(int a, int b) {

    int c = a % b < 0;

    return a / b + (b < 0 ? c : -c);

    }

    所有这三个版本在amd64上使用clang 3.4.1 -O2生成无分支代码。但是,在二进制补码体系结构中,以下操作可能会更快一些:

    int divE2(int a, int b) { return a / b + (-(a % b < 0) & (b < 0 ? 1 : -1)); }

    生成的代码

    divF:

    cdq

    idiv esi

    shr edx, 31

    sub eax, edx

    divF2:

    cdq

    idiv esi

    test edx, edx

    setg cl

    movzx ecx, cl

    shr edx, 31

    sub ecx, edx

    test esi, esi

    setg dl

    movzx edx, dl

    shr esi, 31

    sub esi, edx

    cmp ecx, esi

    sete cl

    movzx ecx, cl

    sub eax, ecx

    潜水:

    cdq

    idiv esi

    mov ecx, edx

    shr ecx, 31

    sar edx, 31

    test esi, esi

    cmovs edx, ecx

    add eax, edx

    divE2:

    cdq

    idiv esi

    sar edx, 31

    shr esi, 31

    lea ecx, dword ptr [rsi + rsi - 1]

    and ecx, edx

    add ecx, eax

    mov eax, ecx // WTF? But OK when inlined...

    基准测试

    使用上述编译器,在i7-3720QM CPU @ 2.60GHz上,使用不同的TESTFUNC运行以下代码,可以得到

    simple truncating division:

    1225053229                 base:  8.41 ns

    round to -inf for b > 0, broken for b < 0:

    975205675                 divF:  8.70 ns

    975205675               ben135:  8.71 ns

    euclidean division:

    1225082031                divE2:  9.37 ns

    1225082031                 divE:  9.67 ns

    round to -inf, work for b < 0:

    975229215                Chazz:  9.67 ns

    975229215                divF2: 10.56 ns

    975229215           runevision: 13.85 ns

    975229215        LegsDrivenCat: 16.62 ns

    975229215                Warty: 20.00 ns

    likely an overflow bug trying to implement the above:

    975049659              DrAltan: 11.77 ns

    第一列是产生相同结果的校验和分组算法。 base是用于测量测试开销的最简单的截断除法。

    码:

    #define STRINGIZE2(a) #a

    #define STRINGIZE(a) STRINGIZE2(a)

    int main()

    {

    srandom(6283185);

    static const int N = 500000000;

    int ret = 0;

    for(int i = 0; i < N; ++i)

    {

    int a = random() - 0x40000000, b;

    do b = (random() >> 16) - 0x4000; while(b == 0);

    ret += TESTFUNC(a,b);

    }

    timespec t;

    clock_gettime(CLOCK_VIRTUAL, &t);

    printf("%10d %20s: %5.2f ns

    ", ret, STRINGIZE(TESTFUNC), (t.tv_sec*1.e9 + t.tv_nsec)/N);

    }

    参考文献

    达安·雷恩计算机科学家分册和模数。 2001年12月。

    雷蒙德·布特(Raymond T.函数div和mod的欧几里得定义。 1992年4月。

    对于2的幂,取决于您的编译器实现(Visual Studio),可以使用右移。

    -5 >> 2 == -2

    我不是低级优化方面的专家,但是这是一个没有分支(条件)的版本,它也不需要转换为浮点数。经过C#测试,它似乎比使用分支的版本要快得多。

    return (a - (((a % b) + b) % b)) / b;

    此解决方案部分源自有关如何对负数执行最佳模函数的讨论:负数的模

    上面的Atlans博士解决方案是最通用的答案,但是如果您知道a不会小于某个固定数字,则可以添加b的最小倍数以使其为正数,然后调整结果。例如,如果a始终> = -10 * b,则可以说:

    return (a + 10 * b) / b - 10

    或者,如果您只想在a为正数或0时得到正确的结果,而在a为负数时得到一些负的结果(例如,用于测试结果是否> = 0,而不包括范围a = [-1; -b +1]),则可以做

    return (a + b) / b - 1;

    对于[-1,-b + 1]和[-b;将返回-1。 -2 * b + 1],但是如果您只是尝试确定除法的结果是否为正,那都没有关系。实际上,我们只是更改了舍入,以使其舍入为-1而不是0。

    这是一个在除数为负数时可用的版本:

    int floor_div2(int a, int b)

    {

    int rem = a % b;

    int div = a/b;

    if (!rem)

    a = b;

    int sub = a ^ b;

    sub >>= 31;

    return div+sub;

    }

    我这样做(只有一个除法,没有乘法,没有模,看起来是最快的解决方案):

    (a < 0 && b > 0) ? (a - b + 1) / b : (a > 0 && b < 0) ? (a - b - 1) / b : a / b

    我很好奇什么更快:更少的分支或更少的乘法/除法/模,因此我将我的解决方案与runevision的解决方案进行了比较,在这种情况下,较少的划分优于较少的分支。

    在某些情况下,ben135的解决方案给出错误的结果(例如10 / -3给出-3但应为-4)。

    通过偏移2 ^ 31以无符号长进行计算,例如:

    int floor_div(int a, int b)

    {

    unsigned long aa = a + (1UL << 31);

    unsigned long cc = (aa / b) - (1UL << 31);

    return (int)cc

    }

    我还没有测试。

    编辑:我的解决方案并非在所有情况下都有效。这是Dr.Atlan解决方案的C#实现:

    ///

    /// Divides a/b, rounding negative numbers towards -Inf.

    ///

    /// Dividend

    /// Divisor; must be positive for correct results

    /// a ÷ b

    public static int Div(int a, int b)

    {

    return a < 0 ? (a - b + 1) / b : a / b;

    }

    不能用于无余数可除的数字。例如,Div(-1, 1)返回-2。

    @BrankoDimitrijevic:哈!那解释了我游戏中的工件。现在使用Dr.Altans解决方案;那个似乎运作良好。

    展开全文
  • 1.关于计算机中的原码、反码和补码定义 1.原码 将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示...//其补码 byte bVal = (byte)val;//还原为负数 sbyte sVal = (sbyte)bVal;
  • c#负数范围可枚举

    2020-12-22 08:55:08
    例如:In[4]: range(-2, 2+1)Out[4]: [-2, -1, 0, 1, 2]C#中是否存在等效系统;我知道IEnumerable方法,但在尝试它时,我得到以下输出://Rextester.Program.Main is the entry point for your code. Don't change it./...
  • C#绝对值的函数

    万次阅读 2018-09-19 16:33:11
    System.Math.Abs(float value);  
  • C#负数 舍数取整的实现

    千次阅读 2019-07-05 11:46:57
    C#無四捨五入,办法如下: 1.正数可以利用加0.5補數,然後向下取整實現 。 2.负数可以先转正,然后加0.4补数,再向下取整,再取反数。 概況:补齐不足,舍其多余 var number="-22.54"; var getNumber=...
  • [StructLayout(LayoutKind.Explicit,Size=16,CharSet=CharSet.Ansi)]publicclassFlag{[FieldOffset(0)]publicushortReserveBits;[FieldOffset(1)]publicushortnFsuVer;[FieldOffset(2)]publ...
  • 如何在一行中将数​​字列表转换为负数?我也想知道我在做什么是正确的,如果有人有改进它的建议。我正在尝试生成一个给定半径的圆。我用列表来存储x和y,所以不能完全确定这是否是最好的方法。另外下面的评论是我想...
  • // 逐步debug发现,反位操作后,与预期不符,说明是在对本身负数存的补码在操作 // int val = (int)num; // 强制转成32位的 // printf("0x%x\n", val); // 0xfffffff6 // val = -val; // 以32位的长度进行操作...
  • C#支持正负数的数字正则验证表达式

    千次阅读 2019-11-27 16:42:40
    如下代码:可以支持正负数正则 string Rx = @"^\+?(:?(:?\d+\.\d+)|(:?\d+))|(-?\d+)(\.\d+)?$"; if (Regex.IsMatch("-111.12aa", Rx)) { Console.WriteLine("支持正负数格式"); } ...
  • 从字符串中提取数字是非常常见的需求,用正则表达式也很简单,几行代码即可完成。 using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions;...
  • 我是否正确地把它放在方括号内,即将其格式化为($ 1,234.00)?如果是这样,我相信这是美国的预期行为。但是,您可以创建自己的NumberFormatInfo,它不会以这种方式表现。拿一个“主要是”的NumberFormatInfo,调用...
  • 在计算过程中,如果要...一、C#取绝对值1、方法:Math.Ads(int value);2、说明:除支持整型外,还支持 float、double、decimal、sbyte、short、long。3、命名空间:System4、举例:Math.Abs(5 - 8); //输出:3Math...
  • c++和C#中,运算符‘%’为取余运算符,而并非取模预算符,在一些应用场景中,如果不加以区分,会产生严重的bug。
  • C# 从补码中获取有符号数的实际数值 原理 计算机存储数据时,默认是存储数据的补码。有符号的数粗存在符号位(最高位)。 这里就会提到原码、反码、补码的概念。 原码:用符号位和数值表示带符号数,正数的符号位用...
  • 参考资料: 1、建议浏览:牛客网选择题:math.h的abs返回值() 2、那个您经常用的abs函数(绝对值)真的总是返回非负数吗 3、C标准库函数abs的一个错误 总结: 1、负数取绝对值小心越界问题,因此先将值范围扩大如...
  • 关于C#数组负问题

    2022-03-10 12:09:17
    string[] sd = new string[dataGridView1.RowCount - 5];... 出现了下面的错误 我就是想radioButton6开着的时候,数组乘1,等于原值, radioButton7开着的时候,数组负, 请问该怎么改呢?我自己已经整不明白了
  • 负数取余的操作

    千次阅读 2017-04-19 12:41:39
    一个数的余数应该是大于等于0,小于该数的绝对值。 如 (-5)%3 = 1 =》 3*(-2) + 1 = -5; 在程序里可以这么写 (n+mod) % mod.
  • C#运算符

    2021-02-06 14:38:44
    对正整数取反,则在原来的数上加1,然后取负数;对负整数取反,则在原来的数上加1,然后取绝对值 ^ 按位异或。只有运算的两位不同结果才为1,否则为0 左移。把运算符左边的操作数向左移动运算符右边指定的位数,右边...
  • C#教程(5)———— 算术运算符 在前面的几篇文章中,我们主要介绍了C#的几种数据类型,那么仅仅有了数据对于我们来说还是不够的,否则计算机就不叫计算机了,改叫记录器了,所以,我们还要对这些数据进行各种各样...
  • c#按位求补(~)

    千次阅读 2020-04-09 15:34:47
    把一个数用二进制形式表示,如果是正数,原码就等于其二进制数,如果是负数,最高位,也就是最左边的那一位变成1 把一个数表示成二进制的时候注意,一定要比正常表示的二进制多4位,用来标记是正数还是负数 比如:...
  • //例如小数位3位double a=1.1234567;int index = a.ToString().IndexOf(".");//小数点所在位置索引if (index + 1 + n > a.ToString().Length|| a.ToString().IndexOf(".")==-1)//索引大于长度或a为整数...
  • C语言负数的除法和求余运算

    千次阅读 2021-05-19 12:42:10
    Yii数据库 http://www.yiiframework.com/doc/guide/1.1/zh_cn/database.ar http://zhengdl126.iteye.com/blog/1460779 ... C#文件操作基础之File类和FileInfo类 文件和I/O流的差异: 文件是一些具有永久存储及特定...
  • 负数的二进制转换方法

    千次阅读 2021-05-22 00:58:05
    十进制负数转二进制假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为: (因为java中int 是4个字节,所以高位需要补0,占够32位)00000000 00000000 00000000 00000101现在想知道,-5在计算机中如何...
  • C# 反码操作

    2020-12-31 05:06:22
    那么就会得到一个编译时错误,Cannot implicitly convert type 'int' to 'byte',而事实上byte是无符号8位整数,范围为0~255,是不可能为负数的 为了修正这个问题,我们可以使用 byte x = 1; byte y = (byte)~x; ...
  • C语言 负数取余

    千次阅读 2021-08-30 20:10:21
    如果 % 左边的操作数是正数,则取余的结果为正数或零;如果 % 左边的操作数是负数,则取余的结果为负数或零。例如: 13% 2 // 余 1 13% -2 // 余 1 -13% 2 // 余 -1 -13% -2 // 余 -1 ...
  • //修改仓库privatevoidEditWareHouse_Click(objectsender,EventArgse){try{MessageBox.Show(gridView1.FocusedRowHandle...//获取到的焦点总为负数}catch(Exceptionex){MessageBox.Show(ex.Message);}}解决方案40dat...
  • C#的数据类型与方法

    2021-08-27 18:26:30
    在学习C#时,在有一定编程基础的情况下,你会发现C#里有很多知识点与其他编程语言有着相似的地方。 C#的数据类型有7种,分别是值类型 ,引用类型 ,整型(默认为int),浮点型(默认为double) ,字符型(char) ,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,844
精华内容 2,337
关键字:

c# 的取负数

c# 订阅
友情链接: naozhong.rar