在计算机中,整型数据是以二进制补码的形式表示的。具体表示方式如下:
原码
原码是最直观的表示方式,最高位是符号位(0表示正数,1表示负数),其余位表示数值。
例如,十进制数35的原码是 `0000000000100011`(假设是16位整型)。
反码
对于正数,反码与原码相同。
对于负数,反码是除符号位外,其余位取反。
例如,十进制数-4的原码是 `10000100`,其反码是 `11111011`。
补码
补码是计算机中最常用的表示方式,用于简化计算机的算术运算。
对于正数,补码与原码相同。
对于负数,补码是反码加1。
例如,十进制数-4的原码是 `10000100`,其补码是 `11111011 + 1 = 11111100`。
移码
移码主要用于浮点数的表示,不适用于整型。
移码是将一个数的所有位取反(符号位除外),然后加1。
例如,十进制数-4的移码是 `11111100`。
不同整型的表示
char:通常为8位整型,表示范围是-128到127。
short:通常为16位整型,表示范围是-32768到32767。
int:通常为32位整型,表示范围是-2147483648到2147483647。
long:在不同系统上可能有所不同,通常为32位或64位整型。
long long:C++11引入的64位整型,表示范围是-9223372036854775808到9223372036854775807。
unsigned char:8位无符号整型,表示范围是0到255。
unsigned short:16位无符号整型,表示范围是0到65535。
unsigned int:32位无符号整型,表示范围是0到4294967295。
unsigned long:在不同系统上可能有所不同,通常为32位或64位无符号整型。
unsigned long long:64位无符号整型,表示范围是0到18446744073709551615。
示例
十进制数35的二进制原码是 `0000000000100011`。
十进制数-4的二进制补码是 `11111011`。
二进制数 `10100`(即十进制的20)的类型是 `int`。
通过这些表示方式,计算机可以有效地存储和处理整数。