源码,反码,补码 |
您所在的位置:网站首页 › 补码怎么求原码 › 源码,反码,补码 |
一、基本前提:
1、C语言中数据分为有符号数和无符号数,有符号数可以表示正数和负数,无符号数只能表示正数,其中有符号数的最高位为符号位,1表示负数,0表示正数,剩余的位表示数据位;无符号数的所有位都表示数据位。
2、数据在内存中都是以二进制存储,且都是以二进制补码的形式存储。
二、源码、反码、补码
1、源码:一个数最原始的二进制数
正数源码: 120 0111 1000 负数源码: -23 1001 0111 0的源码: 0 0000 0000 -0的源码: -0 1000 0000 1的源码: 1 0000 0001 -1的源码: 1 1000 0001 1+(-1) 1000 0010 = -2 若内存中用源码存储,会导致数据的运算结果不对,且0的状态有两种 2、反码:正数的反码= 原码,负数的反码 = 符号位不变,其他位取反120 原码:0111 1000 反码:0111 1000 -23 原码:1001 0111 反码: 1110 1000 0,-0,1,-1的反码 0源码:0000 0000 0反码:0000 0000 -0源码:1000 0000 -0反码:1111 1111 1源码:0000 0001 1反码:0000 0001 -1源码:1000 0001 -1反码:1111 1110 1+(-1)=1111 1111(等于-0的反码)如果计算机中用反码存,负数运算结果正确,但是0的状态有2种 3、补码正数的补码 = 反码=原码 负数的补码 = 反码 +1 0源码:0000 0000 0补码:0000 0000 -0源码:1000 0000 -0反码:1111 1111 -0补码:0000 0000(加1溢出后全置0) 1源码:0000 0001 1补码:0000 0001 -1源码:1000 0001 -1反码:1111 1110 -1补码:1111 1111 1+(-1)0000 0000 = 0,如果计算机中用补码存,运算结果正确,且0的状态只有1种,综上所述: 计算机中存的是一个数的补码 4、由源码求补码或由补码求源码-123 原码: 1111 1011 反码: 1000 0100 补码: 1000 0101 补码求原码: (先求其反码,在求原码) 补码: 1000 0101 反码: 1111 1010(补码求反码,符号位不变,其他位取反) 原码: 1111 1011(反码求原码,反码+1) |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |