无符号数

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

无符号数(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。

相关

  • 胆囊癌胆癌是发生在胆部的恶性肿瘤,常见的有胆管癌、胆囊癌和肝外胆管癌三种。胆癌并不常见,通常会发生在六至七十岁人士身上。原发性胆管癌较少见,性别以男性为多。中上腹及右上腹疼
  • 粘孢子总门粘孢子总门(学名:Myzozoa)是一个非正式的分类,位于囊泡藻界。它是顶复门与双鞭毛虫门的合称。二者具有很近的亲缘关系,同样feed through myzocytosis。
  • 荧光显微镜荧光显微镜是一种使用荧光或磷光物质的光学显微镜,或除此之外使用反射和吸收用于研究的有机或无机物质的特性。“荧光显微镜”是指使用荧光来产生一个图像的任何显微镜,无论是
  • 异氟醚异氟醚(或称异氟烷,英文Isoflurane,商品名Forane),是种常用的全身麻醉药,可用于诱导或维持麻醉。但受制于异氟醚对气管的刺激性,一般会用其他药物诱导麻醉。异氟醚的给药方式为吸入
  • 安妮·麦克拉伦安妮·麦克拉伦(英语:Dame Anne Laura Dorinthea McLaren,1927年4月26日-2007年7月7日),英国生物学家,是发育生物学研究的领军人物。
  • 托雷斯海峡群岛托雷斯海峡群岛是澳大利亚的群岛,位于约克角半岛和新几内亚之间的托雷斯海峡,由超过274座岛屿组成,总土地面积566平方公里,其中217平方公里用作农业用途,2001年人口8,069,首府星期
  • 伯利兹城伯利兹城(英语:Belize City)是中美洲国家伯利兹的最大城市,也是该国的旧都和伯利兹区的首府。根据2000年的人口普查,伯利兹城共有人口49,040;但非官方估计该市有70,000人甚至更多
  • 锺怡雯锺怡雯(1969年2月13日-),马来西亚霹雳州金宝华人,是祖籍广东梅县的客家人,是一名马华文学作家。她于国立台湾师范大学国文系毕业,为师大国文所硕士、博士。于学生时代即崭露头角,多
  • 英石英石(英文:Stone,缩写)是不列颠群岛使用的英制质量单位之一,亦被英联邦国家普遍采用。1英石等于6.35029318公斤或14磅;8英石等于1英担(hundredweight)。实施公制化后,英石已不再用于
  • 神圣同盟神圣同盟(英语:Holy Alliance)是拿破仑帝国瓦解后,由俄罗斯、奥地利和普鲁士三个君主制国家的国王于1815年9月26日在巴黎会晤时建立的一个同盟。欧洲大多数国家后来参加了这个松