Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.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# Isn';t.NET';s整数仅基于2';补语系统?_C#_.net_Vb.net - Fatal编程技术网

C# Isn';t.NET';s整数仅基于2';补语系统?

C# Isn';t.NET';s整数仅基于2';补语系统?,c#,.net,vb.net,C#,.net,Vb.net,: Int32值以31位表示,第32位用作符号位正值用符号和大小表示。负值用二的补码表示 使用的正值表示与使用的正值表示是相同的,这难道不是真的吗 那么,它不应该被改写为:“Int32值(无论正负)用2的补码表示法表示” 还是我误解了什么?是的,你是对的。他们应该说它使用2的补码系统,然后给出使用31位的定义,而不是将否定解释为“2的补码”,只是解释否定的位表示。然后给他们关于位运算符的警告。不,我不这么认为,2的补码表示存在的全部原因是支持对负值的基本运算。10000001 == -127,

:

Int32值以31位表示,第32位用作符号位正值用符号和大小表示。负值用二的补码表示

使用的正值表示与使用的正值表示是相同的,这难道不是真的吗

那么,它不应该被改写为:“Int32值(无论正负)用2的补码表示法表示”


还是我误解了什么?

是的,你是对的。他们应该说它使用2的补码系统,然后给出使用31位的定义,而不是将否定解释为“2的补码”,只是解释否定的位表示。然后给他们关于位运算符的警告。

不,我不这么认为,2的补码表示存在的全部原因是支持对负值的基本运算。10000001 == -127, 00000001 == 1. 用两个补码系统来表示正的int值,是的,当你考虑正数时,你必须意识到最高比特并不意味着“更积极”,这意味着当你考虑任何数字时,你从2S补足的角度考虑它会是积极的还是消极的。这个答案是合理的。但IMHO更准确的说法是“32位”,而不是“31位”。Int32中的最高有效位与任何其他位没有任何不同。它确实有助于指示符号,但它本身并不指示符号(即,在去除符号后,您无法查看数字的其余部分并获得正确的值)。MSB是整个值不可分割的一部分,因此该类型的任何定义都应仅表明它使用32位句点。@Peterdunio如果您阅读引用页上更广泛的文档,则该问题与文档有关,它使用32位句点,参考的特定段落是关于32位值的不同部分。您的回答假定说明了文档应该如何编写,因此它当前所说的内容与此无关。没有理由将前31位与最高有效位区别对待,因为没有所有位,所有位都没有意义。文档目前单独讨论31位并不能证明它应该继续单独讨论31位。