所有类型都存储为计算机上的位.
如果打开计算器并将其置于程序员模式(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 是未签名的.由于其规范,所有浮点数都已签名.
有用的链接(来自评论等):