计算机系统中所有的信息——包括磁盘文件、存储器中的程序存储器中存放的用户数据以及网上落上传送的数据,都是由一串位表示的。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。比如,在不同的上下文中,一个同样的字节序列可能表示一个整数、浮点数、字符串或者机器指令。
计算机中的整数可以分为无符号整数和有符号整数两种类型。无符号整数不存在正负之分,在计算机中以其二进制真值的形式存放。而有符号整数由于有正负数的区分,表示相对复杂。
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,他们的最高有效位就是符号位,都是用0表示“正”,用1表示“负”;而数值位,三种表示方法各不相同。
原码(Sign-Magnitude):
原码就是符号位加上真值的绝对值,即用第一位表示符号, 其余位表示值。
原码是人脑最容易理解和计算的表示方式。
反码(Ones' Complement):
正数的反码是其本身;负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
如果一个反码表示的是负数,人脑无法直观的看出来它的数值,通常要将其转换成原码再计算。
补码(Two's complement)
正数的补码就是其原码本身;负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1 (即在反码的基础上+1)。
对于负数, 补码表示方式也是人脑无法直观看出其数值的,通常也需要转换成原码在计算其数值。
【双语例句】
函数中使用密钥均为不足整字时,高位补零凑齐整字。
When the key used in the function is less than a whole word, the high bits are made with zero to make a whole word.