65535

义项:16位无符号整数最大值
65535

65535是介于65534与65536之间的自然数,等于2的16次方减1,二进制写作16个连续的1,十六进制记作FFFF[1]。它之所以重要,是因为它恰好是16位无符号整数能表示的最大值,取值范围为0至65535,而同样位宽的有符号整数只能取到32767[2]。这一数值因此成为计算机中常见的边界:端口号、16位寄存器、两字节无符号数据类型都以它为上限[3]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

65535是一个正整数,位于65534和65536之间,属于奇数[1]。在n位无符号二进制整数中,数值范围是0到$2^n-1$,把n取16即得0到65535,因此65535就是16位无符号整数可以表示的最大值[2]。

把65535写成二进制是1111111111111111,即连续的16个1;写成十六进制是FFFF,习惯写作0xFFFF[1]。由于它恰好比$2^{16}=65536$小1,在按1024为单位的计数体系里,65536对应64K,65535因此常被视作“64K减一”这一边界值[1]。

这一数值与同宽度的有符号整数形成对照。16位有符号整数采用补码表示时范围为-32768至32767,需要让出最高位作为符号位,能表示的正数上限因此减半[2]。在补码规则下,16个1的位图样同时也被解释为有符号数中的-1[4]。

原理

16位整数由两个字节构成,每个字节8位,共16个二进制位,可区分$2^{16}=65536$种不同的位组合,这些组合依次对应0到65535[5]。无符号类型的全部位都参与计数,最低位权重为$2^0$,最高位权重为$2^{15}$;当所有位都为1时总和为$\sum_{i=0}^{15}2^i = 2^{16}-1 = 65535$,这正是最大值出现的原因[6]。

表示能力有限的直接后果是溢出。当无符号运算的结果超过65535时,结果会对$2^{16}$取模,只保留低16位,表现为数值“绕回”到0附近[5]。同一段位图样在不同解释方式下含义不同:16个1作为无符号数读出65535,作为16位有符号数读出-1,这也是把-1赋值给16位无符号类型时会得到65535的原因[7]。


flowchart LR

A[16 个二进制位] --> B{最高位是否作符号位}

B -->|否 无符号| C[范围 0 ~ 65535]

B -->|是 补码| D[范围 -32768 ~ 32767]

C --> E[位全为 1 时取最大值 65535]

在编程语言与标准库里,65535以常量的形式出现。C 语言的实现文档把unsigned short型的位宽列为16位、取值范围列为0到65535[8]。部分数值计算库则直接提供名为UINT16_MAX的常量,其值即$2^{16}-1$,对应位序列1111111111111111[6]。

发展历程

65535的特殊地位源于16位字长在计算设备中的普遍使用。早期处理器与操作系统大量采用16位架构,指令字长与内存地址都以16位为单位,可寻址的最大地址随之落在65535附近,两字节无符号整数的上限也因此成为常被引用的门槛[9]。

即使在处理器字长扩展到32位、64位之后,16位字段仍被保留在协议与文件格式中。整数溢出条目按位宽列举了常见无符号整数的上限:8位为255,16位为65535,32位为4294967295,64位为18446744073709551615,这一序列说明65535是二进制位宽系列中的一个固定节点[5]。

由于位宽不变,与65535有关的边界长期沿用。网络传输层的端口号始终以16位字段编码,取值范围保持为0至65535;图形文件规范中的部分曝光参数也以16位无符号整数存储,超过上限的取值无法直接写入该字段[10]。

应用

网络端口编号是65535最广为人知的应用场景。TCP与UDP报文头中的源端口和目的端口各为16位,因此端口号范围为0至65535;TCP的0号端口被保留不可使用,UDP的源端口可选,填0表示没有源端口[10]。这些编号按用途划分为熟知端口0至1023、注册端口1024至49151、动态或私有端口49152至65535[11]。

在嵌入式与底层硬件中,65535常作为计数上限出现。16位定时器的预分频与自动重装寄存器取值到65535为止,设计参数时需要以此为上限约束[1]。以字节为单位计算时,65535字节约合64KB,这一范围与16位地址总线可寻址的空间相对应[1]。

在数据存储与图像元数据中,16位无符号整数是常见字段类型。数码相机记录感光度时使用16位无符号整数字段,当实际值高于该字段能容纳的上限时,字段被写入65535,真实数值另存于扩展信息中。在表格软件中,早期版本的工作表行数上限也与这一数值相关[12]。

局限

65535的表示能力由其位宽决定,无法超越。任何需要记录大于65535的整数场景都不能直接使用单个16位无符号字段,否则只能截断或退化表示;例如曝光参数超出范围时,字段只能写入上限值,精确值必须转移到其他字段。

溢出不会自动报错。无符号整数运算超出上限时按$2^{16}$取模绕回,硬件通常不发出提示,需要程序自行检查边界,否则结果会以意料之外的小数值出现[13][5]。若溢出的数值被当作缓冲区长度使用,分配到的空间可能小于预期,进而引发缓冲区越界等安全问题[5]。

可用的端口数量也受这一字段宽度限制。16位端口号总共只有65536个可能取值,其中0号端口在TCP中保留不用,脚本中即便写0号端口,实际含义也往往是让系统分配一个空闲端口,而非真正占用该编号[14][15]。此外,同一编号的TCP端口与UDP端口分属不同命名空间,需要分别统计与放行[14]。

参见

  • 无符号整数 —— 65535 是其中16位宽度的取值上限。

  • 整数溢出 —— 超过65535后的绕回现象与由此产生的错误。

  • 端口号 —— 以16位无符号整数编码,范围止于65535。

  • 补码 —— 解释16个1为何同时可读作-1的编码规则。

  • 字节 —— 两个字节构成16位,是65535所对应的存储长度。

参考资料

  1. 65534与65536之间的自然数 [引用日期2026-10-29]
  2. [科普中国]-无符号整数 [引用日期2026-10-29]
  3. Integers(G.3.5) [引用日期2026-10-29]
  4. Numeric Ranges [引用日期2026-10-29]
  5. 整数溢出 - 此条目可参照英语维基百科相应条目来扩充 [引用日期2026-10-29]
  6. @stdlib/constants-uint16-max [引用日期2026-10-29]
  7. 问关于"C:参考手册“一书中的整数常量EN [引用日期2026-10-29]
  8. E.1.5 整数 (G.3.5) [引用日期2026-10-29]
  9. Revision 4a6c0652-2b12-4b1b-9b9a-3640b505b503 [引用日期2026-10-29]
  10. Port (computer networking) [引用日期2026-10-29]
  11. Port (computer networking) [引用日期2026-10-29]
  12. 夸克百科 [引用日期2026-10-29]
  13. [科普中国]-unsigned int [引用日期2026-10-29]
  14. IP 連接埠範圍是多少:0–65535 的三段劃分與常用連接埠 [引用日期2026-10-29]
  15. 网络编程(六):端口那些事儿 [引用日期2026-10-29]
词条评价
词条统计

浏览次数:1 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:35:55Z

历史版本

本条目引用的词条
无符号整数 整数溢出 端口号 补码 字节