二进制整型的定义和表示方式如下:
一、整型在计算机中的存储形式
计算机内部采用补码形式存储有符号整数。补码的计算规则是:
- 若原码为 $0xxxxxxx$(正数),则反码与原码相同,补码为反码加1;
- 若原码为 $1xxxxxxx$(负数),则反码为原码除符号位外取反,补码为反码加1。
无符号整数
无符号整数直接用二进制表示,范围从0到 $2^n - 1$(n为位数)。例如,8位无符号整数的范围是0到255。
二、常见整型类型的位数与范围
| 类型 | 位数(bit) | 范围| 补码表示示例(8位) |
|------------|--------------|---------------------|-------------------------------|
| byte | 8 | -128 to 127| 10000000 (-128)
01111111 (127) |
| short | 16 | -32,768 to 32,767 | 1000000000000000 (-32,768)
00000001 (1)|
| int| 32 | -2,147,483,648 to 2,147,483,647 | 10000000000000000000000000 (-2,147,483,648)
0000000000000000000000001 (1) |
| long | 64 | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 10000000000000000000000000000000000000 (-9,223,372,036,854,775,808)
00000000000000000000000001 (1) |
三、二进制表示的书写规范
位数省略
二进制数的高位零可省略,例如:
- 5的二进制可写为 `0000 0000 0000 0101`(32位)或 `0101`(8位);
- -5的补码表示为 `1000 0000 0000 0101`(32位)。
数据类型定义
- C语言中可用 `stdint.h` 定义固定位宽整数,例如:
```c
include uint16_t a; // 16位无符号整数 int32_t b; // 32位有符号整数 ``` - Java中基本数据类型(如 `int`)默认为32位,需通过 `int[]` 数组模拟固定位宽。 四、示例说明 十进制转二进制: 例如,将255(十进制)转换为二进制: 8位表示:`11111111` 16位表示:`0000FFFF` 补码计算示例: 7(十进制):原码 `0000 0111` → 反码 `0000 0111` → 补码 `0000 0111` -7(十进制):原码