怎样由一个二进制数的补码推导出其原码?

来源:百度知道 编辑:UC知道 时间:2024/06/19 11:33:52
我想知道如果我知道一个数的补码,但是我该如何推导出它的原码?再者,比如我定义一个负数,在计算机内存中存放是表示形式应该是一样的是吧?无符号数的最高位被当作了数据位是吗?(请重点说说无符号数补码怎样转换为原码?与有符号书是否一样?)谢谢……

很简单,记住补码转换成原码的口诀,减1取反。
举个例子;10001为补码,最高位符号位不需动,减1后为10000,取反后为11111,就这么简单。最高位的1不需动,是符号位,1代表负数,0代表正数。

计算机中的负数用补码的形式存储。-1转换成补码的过程(以两个字节为例子):1的二进制形式:0000 0000 0000 0001 反码: 1111 1111 1111 1110 反码加1: 1111 1111 1111 1111 用16进制的形式表示就是 f f f f。
将一个负数变成补码的过程:去掉符号,用二进制表示出该数,然后反码,反码加1就是补码了。逆向的反推就可以了。由于,这里面牵扯到整数,小数,所以还是建议你多看看数字逻辑方面的资料,很全面的,而且有现成的公式可以参考。

建议看下整数、负数、无符号整数的原、反补码!

你有符号的都弄懂了,为什么无符号的反而不懂阿,我很奇怪