无符号数

✍ dations ◷ 2025-08-14 10:18:11 #计算机编程,计算机算术,程式设计小作品,数据类型

无符号数(unsigned)是计算机编程中的一种数值资料型别。有符号数(signed)可以表示特定类型规定范围内的整数(包括负数),而无符号数只能表示非负数(0及正数)。

有符号数能够表示负数的代价是能够表示的正数范围的缩小,因为其约一半的数值范围要用来表示负数(如8位有符号整数中,对应8位无符号整数表示128~255的部分被用于表示-127~-1)。无符号数可以利用其所占有的所有位来表示较大的数。

例如,16位有符号整数可表示-32768~32767之间的任意整数,而16位无符号整数可表示0~65535之间的数。若将有符号数转换为二进制,则其数值类型允许的最左一位用于表示符号(1为负数,0为正数和0),但在无符号数中,最左一位与其右各位一样用于表示数值。

大多数架构的机器语言不区分有符号数及无符号数。然而算术指令通常设定进位标志等CPU标志,为无符号算术及溢出标志设定。这些标志能够被带入随后的分支及算术指令中。

C语言及大部分C的派生语言为其所有有符号数类型及char类型提供了对应的无符号类型。在这些语言中,若存在显式的unsigned标识符,则将此数标识为无符号,否则为有符号(char类型除外),对应地存在signed标识符用于标识有符号数。为数值添加U后缀也可将此数值标识为无符号数。例如,在32位数中,0xFFFFFFFF表示-1,但0xFFFFFFFFU表示4294967295。

编译器在遇到有符号数与无符号数间的比较、算术等操作时常会发出警告,因为可能因其范围不同而导致溢出。C/C++语言规定无符号整数运算不存在溢出,如果结果超出了无符号类型能表示的最大数,则做模运算取余数。例如,对于uint32的 2-3, 其结果对0x10000模运算取余数,最终结果为0xFFFF。

相关

  • 结核杆菌结核杆菌,即结核分枝杆菌(学名:Mycobacterium tuberculosis)是专性需氧微生物,1882年德国微生物学家罗伯·柯霍在柏林宣告它是结核病的病原体。他凭着此发现获得了1905年诺贝尔生
  • 噻唑噻唑(英语:thiazole),或1,3-噻唑(1,3-thiazole),是一个浅黄色可燃液体,气味与嘧啶类似,化学式为C3H3NS。它包含一个五元环,其中两个顶点分别是氮原子和硫原子,另外三个是碳原子。噻唑被
  • 康斯坦丁一世君士坦丁或肯尼思之子君士坦丁(中世纪盖尔语:Constantín mac Cináeda;现代盖尔语:Còiseam mac Choinnich;死于877年)是皮克特人的国王。他被现代化称为皮克特的君士坦丁二世,
  • NDP邻居发现协议(英语:Neighbor Discovery Protocol简称:NDP或ND)是TCP/IP协议栈的一部分,主要与IPv6共同使用。它工作在数据链路层,负责在链路上发现其他节点和相应的IP地址,并确定可
  • 梭织梭织(英语:Weaving)指将纱线经纬交错织成布料的方法。(台湾则称平织布或平行织品)织物(英语:Woven fabric),指通过经线与纬线交错织成的材料,如布、丝绸等,又合称为布。在某些场合下,
  • 入侵波兰东部利沃夫 (9月17日至22日) – 威尔诺 (9月18日至19日) – 格罗德诺 (9月21日至24日) – 沙茨克 (9月28日) – Wytyczno (10月1日)波罗的海沿岸9月4日–10日北方战区
  • 上科西嘉省上科西嘉省(法语:Haute-Corse)是法国科西嘉大区所辖的省份。该省编号为2B。上科西嘉占了科西嘉岛的北部地区。 5个海外省及大区
  • 澳洲铜头蛇属澳洲铜头蛇属(学名:)是蛇亚目眼镜蛇科下的个有毒蛇属,是澳洲大陆东部及南部地区的特有种。目前共有3个物种已被确认,而各物种之下未有任何亚种。虽然其名字与铜头蝮()相似,但两者并
  • ayumi hamasaki ARENA TOUR 2012 A ~HOTEL Love songs~《ayumi hamasaki ARENA TOUR 2012 A ~HOTEL Love songs~》(滨崎步 2012 巡回演唱会 A ~HOTEL Love songs~)是日本歌手滨崎步于2012年间举行日本巡回演唱会,于2013年3月8日发行DVD
  • 越南战争 (1945年至1946年) 英国 40名英国/印度士兵被杀 第二次第三次(英语:Third Indochina War)越南战争,英国称为Operation Masterdom(支配行动),越南称为Nam Bộ kháng chiến(南方抗战),是在第二次世界大