本帖最后由 小石姐姐 于 2018-2-1 15:31 编辑
计算机中的编码
+7: 0000 0111
-7:
因为二进制没有负数,为了表示负数,人为规定,数字的第一位为符号位,
如果第1位是0,则表示,这个数是正数,如果第1位是1,则表示这个数是负数.
-->
+7: 0000 0111
-7: 1000 0111
这种编码,在计算机中被称之为: 源码
问题:
我们自然界中,+7 + -7 == 0.
--> 计算源码:
+7: 0000 0111
// +
-7: 1000 0111
// =
1000 1110 --> -14 //问题出现了,+7加-7是不等于0的,逻辑上,这样是不正确的
解决:
为了,解决"+7加-7是不等于0"的问题,所以,人为规定,计算机不能使用"源码"来计算,而是要使用"反码"
--> 反码:
正数的反码是正数本身,负数的反码是"负数的源码除了符号位之外,其他位都取反(0变1,1变0)" // 进行运算的时候,反码运算的结果是"反码"
源码 反码
+7: 0000 0111 0000 0111
-7: 1000 0111 1111 1000
--> 计算反码: "+7加-7"
+7: 0000 0111
// +
-7: 1111 1000
// =
1111 1111 --> (源码)1000 0000 --> -0 //自然界中,0就是0,不存在+0或者-0
解决:
为了,解决"+0和-0"的问题,所以,人为规定,计算机不能使用"源码",也不能使用"反码",而是要使用"补码"
--> 补码:
正数的补码是正数本身,负数的补码是"负数的反码+1" // 进行运算的时候,补码运算的结果就是"补码"
源码 反码 补码
+7: 0000 0111 0000 0111 0000 0111
-7: 1000 0111 1111 1000 1111 1001
--> 计算补码: "+7加-7"
+7: 0000 0111
// +
-7: 1111 1001
// =
1 0000 0000 --> 超出了8位,所以,超出的部分砍掉. --> 0000 0000 --> 0
计算机中,所有的数据,都是用补码进行存储,用补码进行运算的.
|
|