【摘要】计算机对外信息展示方式有文字、图片、音频、视频等,但不论应用在什么地方,信息在机器内部的形式都是一致的,即均为0和1组成的各种编码。 一、有符号数和无符号数 在计算机中参与运算的数有两大类:无符号数和有符号数。 无符号数 计算机中的数均放在寄存器中,通常称寄存器的位数为机器字长。 所谓无符号数,即没有符号的数,在寄存器中的每一位均可用来存放数值。当存放有符号数时,则需留出位置存放符...计算机对外信息展示方式有文字、图片、音频、视频等,但不论应用在什么地方,信息在机器内部的形式都是一致的,即均为0和1组成的各种编码。
一、有符号数和无符号数
在计算机中参与运算的数有两大类:无符号数和有符号数。
无符号数
计算机中的数均放在寄存器中,通常称寄存器的位数为机器字长。
所谓无符号数,即没有符号的数,在寄存器中的每一位均可用来存放数值。当存放有符号数时,则需留出位置存放符号。
因此,在机器字长相同时,无符号数与有符号数所对应的数值范围是不同的。
以机器字长为16位为例,无符号数的表示范围为 0~65535,而有符号数的表示范围为 -32768 ~ +32767(此数值对应补码表示)。
有符号数
对有符号数而言,符号的“正”、“负”机器是无法识别的,但由于“正”、“负”恰好是两种截然不同的状态,如果用“0“表示“正”,用“1”表示“负”,这样符号也被数字化了,并且规定将它放在有效数字的前面,即组成了有符号数。
例如,+1100 在机器中表示为 01100 ,-1100 在机器中表示为 1 1100 。
在Java语言中,如int、float 等都是有符号数,故下文所讲都是在有符号数的范畴。
二、机器数与真值
把符号(如+、-)“数字化”的数称为机器数,而把带“+”或“-”符号的数称为真值。
一旦符号数字化后,符号和数值就形成了一种新的编码。在运算过程中,符号位能否和数值部分一起参加运算?如果参加运算,符号位又需作哪些处理?这些问题都与符号位和数值位所构成的编码有关,这些编码就是原码、补码、反码和移码。
原码
原码是机器数中最简单的一种表示形式,符号位为0的表示正数,符号位为1的表示负数,数值位即真值的绝对值,故原码表示又称为带符号的绝对值表示。
反码
正数的反码