原码 反码 补码
来源:互联网 发布:最好的电子书格式 知乎 编辑:程序博客网 时间:2024/06/06 16:27
一般意义上的二进制:
二进制表示:0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
对应的数字:0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
注:这是通常生活中所理解的二进制,但只能表示自然数,实际上这也就是无符号数的原码。
原码:
计算机中对数字的二进制表示。最高位为符号位,0表示正数,1表示负数。
二进制表示:0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
对应的数字:0 1 2 3 4 5 6 7 0 -1 -2 -3 -4 -5 -6 -7
注:原码可以表示任何整数,但存在两个问题。
1.正负数相加不为0,如1和-1的原码相加 0001+1001 = 1010,对应原码为-2。
2.存在两个0,即0000和1000。
为解决正负数相加不为0的问题,我们采用反码的表示方法。
反码:
正数表示与原码相同,负数是除去符号位各位取反。
二进制表示:0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
对应的数字:0 1 2 3 4 5 6 7 -7 -6 -5 -4 -3 -2 -1 -0
注:反码解决了原码中正负号相加的问题。如1和-1的反码相加,0001 + 1110 = 1111 = -0 =0。
但是存在两个0的问题依旧没有解决,所以我们需要用到补码。
补码:
正数表示与原码相同,负数是除去符号位各位取反,并且加1。
二进制表示:0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
对应的数字:0 1 2 3 4 5 6 7 -8 -7 -6 -5 -4 -3 -2 -1
注:至此,利用补码解决了原码的连个缺陷,补码可以表示所有整数并进行正确运算。
(以上内容参考《C语言点滴》赵岩)
0 0
- 原码、反码、补码
- 原码-反码-补码
- 原码、反码、补码
- 原码、反码、补码
- 原码,反码,补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码补码反码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码 补码 反码
- 原码、反码、补码
- 原码 反码 补码
- 编译与静态链接
- hive中的一些基本问题解决方法
- JVM频繁Full GC的情况及应对策略
- linux 大量的TIME_WAIT解决办法
- 重新学习《C++Primer5》第6章-函数
- 原码 反码 补码
- vs2010无法找到rcdll.dll解决方法
- Samba服务器配置实例指南
- CSS的overflow属性及清除浮动
- eclipse配置背景颜色以及字体
- 使用sprikit构建关卡1 4-13 人物通过轻扫可以实现左右移动上跳下蹲(复杂的有待构建)
- HTML5 参考手册(事件属性)
- Qt5 VS2013中文乱码解决
- 通过复杂的代码形成业务数据并显示的思路 游标 存储过程