无符号数

✍ dations ◷ 2025-06-29 19:52:37 #计算机编程,计算机算术,程式设计小作品,数据类型

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

相关

  • 瘫痪瘫痪是指一个或多个肌肉群的肌肉功能丧失。而在受影响的区域,也可能会有感觉丧失的情况。瘫痪的原因一般是神经系统受损,尤其是脊髓的部位。其他主要原因包括中风、外伤、小儿
  • 肝细胞肝细胞(hepatocyte(hepato-意为肝,-cyte意为细胞))是肝脏实质中的一类多边形的腺上皮细胞。肝脏细胞直径在20-30um之间,使用H&E染色于光学显微镜下观察可见其细胞质整体嗜酸性并含
  • 尿素甲醛树脂尿素甲醛树脂(UF)是一种透明的热固性塑胶。在弱基(氨或吡啶)内加入甲醛和尿素,加热,经缩合反应,便会合成尿素甲醛树脂。它在1920年代出现在市场。它曾常用于制造电器外壳、电话听筒
  • 泰源盆地泰源盆地是台湾东部的盆地,也是海岸山脉面积最大的盆地,又称高原盆地。全长约25公里,中央最宽处为8公里;总面积约130平方公里。位于台湾东部海岸山脉的南段,介于花莲县富里乡与台
  • 桃仁桃仁为桃或山桃的成熟种子。是常用的中药之一。桃仁首见于《本经》。功能活血祛瘀、润肠通便。用于桃红四物汤、生化汤、桂枝茯苓丸、桃核承气汤、五仁丸、苇茎汤、大黄牡丹
  • 黄一农黄一农(1956年4月26日-),出身金门的台湾历史学者。他曾获颁中央研究院院士头衔,并长期任教于国立清华大学。1956年,黄一农出生于金门县。1958年,他与家人在八二三炮战前夕迁居台北
  • 史戴比拿德博拉·安·“黛比”·格里尔·施塔贝诺(英语:Deborah Ann "Debbie" Greer Stabenow;1950年4月29日-),是一位美国民主党政治人物,2001年起担任密歇根州美国参议院议员。在当选为联
  • 道诺霉素道诺霉素(Daunorubicin或daunomycin,又名柔红霉素)是一种属于蒽环类抗生素(anthracycline)类的化学治疗药物,用于治疗某些类型的癌症(如急性骨髓性白血病(AML)、急性淋巴性白血病(ALL)
  • 2005年飓风内特飓风内特(英语:Hurricane Nate)是2005年9月上旬对百慕大构成威胁,但始终处于海上没有登陆的大西洋飓风,是这年大西洋飓风季的第14场获得命名的风暴,也是第7场飓风。内特于9月5日在
  • 达尔马提亚王国达尔马提亚王国(克罗地亚语:Kraljevina Dalmacija;德语:Königreich Dalmatien;意大利语:Regno di Dalmazia)是哈布斯堡君主国自1815年到1918年期间下辖的一个行政区划(王国)。其首府