[英]How to make sure that incoming object is a base type (String, Int16, Int32, Double…)?
[英]Why is int16 type limit 32,768 if 16 bits max is 65,535?
所有“1”位的16位总和将产生65,535:
第一个字节:1(128)1(64)1(32)1(16)1(8)1(4)1(2)1(1)
第二个字节:1(327,68)1(16,384)1(8,192)1(4,096)1(2,048)1(1,024)1(512)1(256)
小数将是:
32,768 + 16,384 + 8,192 + 4,096 + 2,048 + 1,024 + 512 + 256 + 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
总计:65,535
int16的最大值应为65,535和32,768(仅为1000 0000 0000 0000)
我看不出它会怎么样。
因为它的范围从-32,768到32,767,其总和是65,536(这里包括0)可能的值。
如果你使用UInt16
(代表unsigned int16),你可以给它一个65,535的值。
这是signed int和unsigned int之间的区别。 16位无符号整数范围为[0,65535]。 而16位有符号的int范围[-32768,32767]。 int16的最大值应为32767而不是32768。
Int16已签署。 最重要的位表示符号(0表示正数,1表示负数)。 MSB为0时可达到的最高数为0111 1111 1111 1111,即十进制的32767。
它是以这种方式设计的,因此无符号加法/减法也适用于有符号数。 因此,要获得-1,从0减去1,得到1111 1111 1111 1111(由于溢出)。 如果你继续减去,你最终会达到1000 0000 0000 0000 = -32768(dec),这是可以表示为int16的最低负数。
因此,2 ^ 16 = 65536,这是可表示值的总数。 这相加:(a)1为零的值,(b)32767个正数,(c)32768个负数。
有符号整数和无符号整数之间存在差异。 一个人有能力为负,而另一个人没有。
它不仅适用于int16,也适用于其他类型。
+--------+----------------------------+----------------------------+--------------------------+
| Type | Min | Max | Size |
+--------+----------------------------+----------------------------+--------------------------+
| sbyte | -128 | 127 | Signed 8-bit integer |
| byte | 0 | 255 | Unsigned 8-bit integer |
| char | U+0000 | U+ffff | Unicode 16-bit character |
| short | -32,768 | 32,767 | Signed 16-bit integer |
| ushort | 0 | 65,535 | Unsigned 16-bit integer |
| int | -2,147,483,648 | 2,147,483,647 | Signed 32-bit integer |
| uint | 0 | 4,294,967,295 | Unsigned 32-bit integer |
| long | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 | Signed 64-bit integer |
| ulong | 0 | 18,446,744,073,709,551,615 | Unsigned 64-bit integer |
+--------+----------------------------+----------------------------+--------------------------+
你忘记了这个标志。 int16是一个有符号的类型,所以它实际上是:
第一个字节:...
第二个字节:符号(+或 - )1(16,384)...
其涵盖范围从-32768到32767(0被认为是正数)。
大多数情况下,0表示正数,1表示负数: 符号位
如果它是uint16(u表示未签名),那将是完全不同的事情:
第一个字节:...
第二个字节:1(32768)...
反过来,其范围从0到65535。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.