黑马程序员技术交流社区

标题: 原码,反码,补码的问题 [打印本页]

作者: 沙子    时间: 2014-12-15 22:54
标题: 原码,反码,补码的问题
如何不用求反码就能求出补码?有没有更快捷的方法。
作者: zhaozhao    时间: 2014-12-15 23:07
其实很简单,只要记住对正数来说,原码、反码、补码一样。对负数来说,原码最高位是1,代表负数符号,反码是原码各位取反,补码是反码加1,即可!在计算机中补码的表示形式,更利于计算机的计算!
作者: 7788665544    时间: 2014-12-15 23:09
顶一下楼上的
作者: 青衫禅客    时间: 2014-12-16 00:14
补码就是一个数的二进制表达形式
作者: huoxy    时间: 2014-12-16 09:18
我的理解:原理就是取反+1,只不过把取反这一步的结果称为反码,加了个名称而已,并不是说有更快捷的方法。
作者: 我只是一只菜鸟    时间: 2014-12-16 10:00
顶一楼,应该没什么快捷的方法吧
作者: 逆世界ylm    时间: 2014-12-16 10:17
顶一楼的回答
作者: 极光_CDY    时间: 2014-12-16 10:37
先说含义
原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
(1) 原码:在数值前直接加一符号位的表示法。
例如: 符号位 数值位
[+7]原= 0 0000111 B
[-7]原= 1 0000111 B
(2)反码:
正数:正数的反码与原码相同。
负数:负数的反码,符号位为“1”,数值部分按位取反。
例如: 符号位 数值位
[+7]反= 0 0000111 B
[-7]反= 1 1111000 B
(3)补码:
正数:正数的补码和原码相同。
负数:负数的补码则是符号位为“1”。并且,这个“1”既是符号位,也是数值位。数值部分按位取反后再在末位(最低位)加1。也就是“反码+1”。
例如: 符号位 数值位
[+7]补= 0 0000111 B
[-7]补= 1 1111001 B
*****负数的补码*****他的出现是将减法也简化为加法,方便了计算机的运算。负数的补码加上他的绝对值,刚好溢出,也就是模的概念。0(256更高位)-正数,然后进行强制转换,也能得到结果。但我们知道,对于计算机运算,基本操作是位,故采用位运算取反,加一应该是最快的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2