Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么[1111111]在整数中表示为-1而不是255?_C#_.net_Int_Sbyte - Fatal编程技术网

C# 为什么[1111111]在整数中表示为-1而不是255?

C# 为什么[1111111]在整数中表示为-1而不是255?,c#,.net,int,sbyte,C#,.net,Int,Sbyte,我根据规则进行数字符号替换:逐位反转,然后加1,但我使用的是整数数据类型,而不是sbyte。编译器如何理解我正在更改符号 不返回值255 int operand1 = 0, operand2 = 0; int result; operand1 = 0x01; // [0000 0001] result = ~operand1;

我根据规则进行数字符号替换:逐位反转,然后加1,但我使用的是整数数据类型,而不是sbyte。编译器如何理解我正在更改符号

不返回值255

        int operand1 = 0, operand2 = 0;
        int result;

        operand1 = 0x01;                            // [0000 0001]
        result = ~operand1;                         // [1111 1110]
        result++;                                   // [1111 1111]

        Console.WriteLine(" ~ {0} + 1 = {1} ", operand1, result);
输出:
“~1+1=-1”

有符号整数和无符号整数。有符号整数可以包含负值,因此范围的“上”部分从(0-(int.max/2))开始计数,然后向下计数

见本文:

如果使用无符号int,它的行为与我认为的一样


在有符号整数中,最高位决定其是否为负值。

比较字节和整数中的位,您将得到答案,但答案是什么?您说的是“反转所有位”,而不是“反转最低8位”,因此uint也可以解决此“问题”。请参见: