Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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# 如何将-128放入一个sbyte中_C#_Types_Sbyte - Fatal编程技术网

C# 如何将-128放入一个sbyte中

C# 如何将-128放入一个sbyte中,c#,types,sbyte,C#,Types,Sbyte,我记得我们已经了解到有符号整数类型(sbyte、short、int、long) 第一位表示符号,后7位表示值 我看到sbyte的范围是-128到127,而我认为它一定是-127到127 我尝试了一些代码来理解这是如何可能的,我面临着两件奇怪的事情: 1-我尝试了以下代码: sbyte a = -128; Console.Write(Convert.ToString(a, 2)); 结果是 11111亿美元 好像它是一个两字节的变量 2-尝试将范围内的所有数字转换为二进制: for(sbyte

我记得我们已经了解到有符号整数类型(sbyte、short、int、long) 第一位表示符号,后7位表示值

我看到sbyte的范围是-128到127,而我认为它一定是-127到127

我尝试了一些代码来理解这是如何可能的,我面临着两件奇怪的事情:

1-我尝试了以下代码:

sbyte a = -128;
Console.Write(Convert.ToString(a, 2));
结果是

11111亿美元

好像它是一个两字节的变量

2-尝试将范围内的所有数字转换为二进制:

for(sbyte i=-128;i<=127;i++)
{
    Console.WriteLine(Convert.ToString(i, 2));
    if(i==127) break;
}
for(sbyte i=-128;i 01111111)
但如果它不适合,那么为什么范围是-128到127

我看到
sbyte
的范围是
-128
127
,而我认为它一定是
-127
127

范围确实是
[-128,+127]
。范围
[-127,+127]
将意味着
sbyte
只能表示
255
不同的值,而8位构成
256
组合

顺便说一句,如果
-128
不是合法值,编译器会抱怨

sbyte a = -128;
没有重载
Convert.ToString(sbyte-value,int-toBase)
,因此在您的情况下,
Convert.ToString(int-value,int-toBase)
被调用,
sbyte
被提升为
int

要快速检查值,可以将
sbyte
打印为十六进制数:

sbyte s = -1;
Console.WriteLine("{0:X}", s); // FF, i.e. 11111111
如果我省略
如果(I==127)中断循环继续

当然,
sbyte.MaxValue
127
,所以
i
我看到
sbyte
的范围是
-128
127
,而我认为它一定是
-127
127

范围确实是
[-128,+127]
。范围
[-127,+127]
将意味着
sbyte
只能表示
255
不同的值,而8位构成
256
组合

顺便说一句,如果
-128
不是合法值,编译器会抱怨

sbyte a = -128;
没有重载
Convert.ToString(sbyte-value,int-toBase)
,因此在您的情况下,
Convert.ToString(int-value,int-toBase)
被调用,
sbyte
被提升为
int

要快速检查值,可以将
sbyte
打印为十六进制数:

sbyte s = -1;
Console.WriteLine("{0:X}", s); // FF, i.e. 11111111
如果我省略
如果(I==127)中断循环继续


当然,
sbyte.MaxValue
127
,因此
iI无法为post找到合适的标题有符号整数类型不是“符号大小”类型。它们使用“2的赞美”表示,符号字节的范围为-128到127。您在“16位结果”中错误计算了1和0的数量。实际值有9个1,7个0,但你在问题中输入了8个1,8个0。@Aziz非常感谢。这真的很有趣,我找不到一个合适的帖子标题,有符号整数类型不是“符号大小”类型。它们使用“2的赞美”表示,符号字节的范围为-128到127。您在“16位结果”中错误计算了1和0的数量。实际值有9个1,7个0,但你在问题中输入了8个1,8个0。@Aziz非常感谢。这真的很有趣,我知道-128是一个合法值,我想知道它的二进制值是什么。Aziz的链接解释了这一点。你的代码解决了我的另一个问题,那就是获取奇怪的值
11111110000000
@AshkanMobayenKhiabani你可以打印成十六进制,我更新了帖子。我知道-128是一个合法值,我想知道它的二进制值是什么。Aziz的链接解释了这一点你的代码解决了我的另一个问题,那就是得到奇怪的
11111110000000
@ashkanmobayenkhaiabani你可以打印成十六进制,我更新了帖子。