C# - 类型大小

Don*_*von 1 c# size unsigned signed types

最近我一直在努力学习C#,但是我无法理解某些东西.每个整数类型都有一个大小(有符号8位,无符号8位,有符号16位,无符号16位等).我很难理解尺寸究竟是什么,以及它们如何达到这个尺寸.8bit,16bit,32bit等是什么意思?签名和未签名也是如此.我不明白这些.如果有人可以引用我的链接解释位,签名和未签名,或甚至向我解释,那将是伟大的.谢谢

Err*_*sen 5

所有类型都存储为计算机上的位.

如果打开计算器并将其置于程序员模式(Alt + 3),您可以看到数字(整数,无论​​如何)如何表示为位.

程序员模式下的计算器

正如可以从上面的图像看到,255占用第0位至第7位(八个1的成一排).255是您可以在8位无符号整数中表示的最大数字.如果在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 |
+------+-----+----------------------+----------------------+---------------------+
Run Code Online (Sandbox Code Playgroud)

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

基本上,对于整数,更多位表示更大的数字,浮点更多位可能意味着更大的数字和/或更高的精度(小数位).

值得注意的int是,a uint是签名的,而a 是未签名的.由于其规范,所有浮点数都已签名.

有用的链接(来自评论等):