补码,反码,加减法运算,类型取值范围

## 知识普及:












计算机规定0000 0000代表0, 1000 0000代表的-0 没有意义,必须找个-127~127之外的数字与之对应. 认为规定 -0 就是 -128

### 数学家分析:
1. byte占用8个bit , 可得其可以表示2^8个数据.
2. 这8个bit分为 符号位与数值位 , 符号位0表示正数 1 表示负数.
3. 按照先前分析可得 (+127:0111 1111 , +1: 0000 0001,+0 : 0000 0000 , -0: 1000 0000, -1 : 1000 0001,-127:1111 1111)
4. 可以看出上面的最高位是不参与计算数值的, 只代表一个符号位置. 但是出现一个问题就是 +0 和 -0 怎么办? 这不都是0么?
5. 规定一下 -0:1000 0000代表一个-127~127之外的数字. 那就代表-128.

### 程序员分析:

1. 计算机存储的带有符号的整数实质上存储的都是他们的补码.
2. 正数和0的补码,反码就是其本身原码,不需要进行转换得到反码和补码.
3. 负数的反码是符号位不变,其它位取反;补码是在负数的基础上加1(符号位保持不变.).
4. 计算机中使用补码进行加法运算.

#### 示例:
1. 计算机中不存在减法运算,减法运算会转换成加法运算.8-1=8+(-1)=(0000 1000)+(1111 1111) = (0000 0111)


(源码)1000 0001 =(补码)1000 0000 = (反码)1111 1111
原文地址:https://www.cnblogs.com/A-FM/p/10905137.html