无符号数

✍ dations ◷ 2025-02-24 00:54:57 #计算机编程,计算机算术,程式设计小作品,数据类型

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

相关

  • 保罗·瓦兹拉威克保罗·瓦兹拉威克(德语:Paul Watzlawick,1921年8月25日-2007年3月31日)是一位出生于奥地利的美籍家庭治疗师、心理学家、传播理论学家与哲学家,是传播理论的领军人物。在家庭治疗
  • 卡尔达肖夫指数卡尔达肖夫指数(英语:Kardashev Scale)是根据一个文明所能够利用的能源量级,来量度文明层次及技术先进程度的一种假说。1964年苏联天文学家尼古拉·卡尔达肖夫首先提出用能量级
  • 长春花新碱长春新碱(Vincristine),商品名“维克思丁”、“安可平”(Oncovin),又名长春花新碱、新长春碱,医学上简称VCR,是一种由夹竹桃科长春花属植物长春花中提取的一种生物碱。它是一种有丝
  • 信息战信息战是指使用和管理信息来保证与对手的比较优势。包括收集情报,验证,向对手散布宣传和假情报等等。指现代战争在大量使用信息技术和信息武器(英语:information weaponization)
  • 西瓜汁Citrullus vulgaris西瓜(学名:Citrullus lanatus),古称寒瓜,是葫芦科西瓜属的一种植物或其果实。原产于非洲,是一种双子叶开花植物,形状像蔓藤,叶子呈羽毛状。它所结出的果实是假果,
  • 拟人化拟人论(Anthropomorphism)是一种拟人法(personification、prosopopoeia)(或称“智慧体化”)的使用,将人类(或称“智慧体”)的形态、外观、特征、情感、性格特质套用到非人类的生物、
  • 2019冠状病毒病加纳疫情2019冠状病毒病加纳疫情,介绍在2019新型冠状病毒疫情中,在加纳发生的情况,可能无法涵盖所有及时的事件。2020年3月12日,加纳卫生部宣布该国确诊两名新冠肺炎患者,曾到达挪威和土
  • 栖息地零碎化栖地细碎化(英语:Habitat fragmentation)又称栖地破碎化,是指生物栖息地被分隔,致使种群被分割的现象。栖息地零碎化通常是描述那些因人类活动所造成的栖息地分隔,像是:开拓道路、
  • 细胞内噪声如果从定量的角度去研究细胞的时候,尽管细胞的遗传背景是相同的,即便是在同一个组织中,细胞内蛋白质表达水平、细胞的大小和胞内结构是不尽相同的,因此,这种随机的可变性被称为细
  • 桐谷健太桐谷健太(1980年2月4日-)为日本男演员,出身于大阪府大阪市北区天神桥六丁目。身高181cm,血型O型。