1、原码、反码和补码:
(1)最高位表示符号位,正数时0,负数是1。
(2)正数的原码、反码和补码都一样。
(3)负数要用补码来计算:
●原码就是直接在数值前面加上符号表示
●反码等于原码的符号位不变,其他位按位取反
●补码等于反码加一
2负数用补码表示原理
首先,理解负数在计算机中为什么是以补码形式存在的,主要是因为计算机根本不知道什么叫负数,咱们都知道带有负号的是负数,但是计算机不知道。但是我们为什么把负数表示成补码呢,其他的数行不行呢?
我们先以一个0-7(8个数)为例,假设我们以0为原点,它的周期为8。-1表示7,-2表示6,依次类推。
对这个图怎么看呢,注意以下两点:
1、图上可以看到数的范围(周期)
2、在图上从原点0到任意一点有两种方式,顺时针拨(用正数表示),逆时针(用负数表示)
光白话,也没例子直观,直接安排
例如1:我们要从0到2,正向拨两次(010),反向拨6次(110)。假如我们现在查看-2,要求正向拨,就是正向拨6次(110),就可以到-2。
计算机就是如此识别的,它把一个数字序列的前半部分都识别为正数,后半部分,计算机会认为该数是负数的补码,对此数操作后,再求原码,显示给用户看。
下面我们再举一个复杂点的列子。
例如:-5
原码:1000 0101
反码:1111 1010
补码:1111 1011
它的周期是2^8 ,我们把0看成原点0,比如到1是正向拨1次,反向拨2^8-1(1111 1111)。比如-1反向拨1,正向拨的话就是2^8-1 (1111 1111)。我们定义正向拨是唯一方向的话,-1就是(1111 1111)。2^8 是总的个数,正向排过去,正数从小到大,负数也是从小(-128)到大(-1),这样就把2^8 排满了。 计算机中,总的个数是2^8, 前2^7 都是正数,后2^7都是负数。(正数从小到大,负数也是从小到大)。