2015-08-28 38 views
1

最近我一直在努力学习C#,但是我很难理解某些东西。每个整型有一个大小(有符号8位,无符号8位,有符号16位,无符号16位等)。我很难理解尺寸究竟是什么,他们是如何获得这种尺寸的。 8bit,16bit,32bit等是什么意思?并签署和未签名。我不明白这些。如果任何人都可以引用我的链接解释位和签名和未签名,甚至解释给我,这将是伟大的。谢谢C# - 类型大小

+4

https://en.wikipedia.org/wiki/Bit和https://en.wikipedia.org/wiki/Integer_(computer_science)将是一个好的开始。 –

+1

https://msdn.microsoft.com/en-us/library/exx3b86w.aspx – Martheen

+2

无符号数字只能是正数,有符号可以是正数/负数。 8位数字表示它自己的数字可以表示2^8个不同的值。 带符号的8位整数可以保持-128到+127之间的值,无符号8位整数可以保持从0到255的值。 –

回答

5

所有类型存储在您的计算机上的位。

如果打开Calculator并将其置于Programmer Mode(Alt + 3),您可以看到数字(整数,无论​​如何)都表示为位。

Calculator in Programmer Mode

正如可以从上面的图像看到,255占用第0位至第7位(八个1的中的行)。 255是您可以在8位UN符号整数中表示的最高数字。如果在8位类型中添加1到255,则会出现溢出错误,因为256不适合8位。在低级语言中,没有溢出错误,255 + 1等于0,因为值翻转了

带符号的值使用一位来表示符号(正数或负数)。因此,一个符号的8位数字可以从-128到127

+------+-----+----------------------+----------------------+---------------------+ 
|  | unsigned     | signed          | 
+------+-----+----------------------+----------------------+---------------------+ 
| bits | min | max     | min     | max     | 
+------+-----+----------------------+----------------------+---------------------+ 
| 8 | 0 | 255     | -128     | 127     | 
| 16 | 0 | 65535    | -32768    | 32767    | 
| 32 | 0 | 4294967295   | -2147483248   | 2147483647   | 
| 64 | 0 | 18446744073709551615 | -9223372036854775808 | 9223372036854775807 | 
+------+-----+----------------------+----------------------+---------------------+ 

浮点数像花车和双存储在不同的方式,这是不是很容易解释:https://en.wikipedia.org/wiki/Floating_point#Internal_representation

基本上,整数越多意味着数字越大,浮点越多意味着数量越大,精度越高(小数位数)。

还值得注意的是,int已签名,而uint未签名。由于它们的specification,所有浮点数是签署的

有用的链接(从评论等):

2

大小决定在该类型的存储中使用多少位。

EG 8位INT:00000001 == 1

如果类型是有符号的,则该类型的第一个比特确定它是否是正或负的值

例如11111111 == -1(使用。一种叫补中的链接更多细节)

签署类型的简要介绍可以在这里找到: http://kias.dyndns.org/comath/13.html