求补码的方法?
求补码分两种情况:
一,正数:正整数的补码是其二进制表示,与原码相同。(正整数的原码,补码和反码都一样)
二,负数:求负整数的补码,就是将其对应正数二进制表示所有位取反然后加1,0变1,1变0,符号位为1不变。
同一个数值在不同的系统中表示的形式是不一样的,这是因为可以分成8位二进制和16位二进制。
扩展资料:
计算机中的符号数有三种表示方法,即是原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
一个规定:
数0的补码表示是唯一的。
[+0]补=[+0]反=[+0]原=00000000
[ -0]补=11111111+1=00000000
求补码的方法,极其简单:
正数不变。
负数,用绝对值减一取反。
例如:求-26 的 8 位补码是多少?
先减一,可得:25 = 0001 1001 (二进制)。
再取个反,就完事了:1110 0110。
正数的补码,是其本身。
负数的补码,就用它的正数,减一取反,即可得到补码。
如,已知:+9 补码是:0000 1001。
下面求-9 补码:
先减一:0000 1001 - 1 = 0000 1000;
再取反:1111 0111。
所以有:-9 补码 = 1111 0111。
这不就完了吗?
简不简单?意不意外?
原码反码符号位,讨论这些垃圾干嘛?
----------------------
由补码换算到十进制数,也极其简单。
你只需记住:【补码首位的权,是负数】。
一般的八位二进制数,各个位的权是:
128、64、32、16、8、4、2、1;
如果是八位的补码,各个位的权则是:
-128、64、32、16、8、4、2、1。
例如,有一个补码是:1110 0001,
它代表的十进制数是:-128 + 64 + 32 + 1 = -31。
又如,另一个补码是:0110 0001,
它代表的十进制数是:0 + 64 + 32 + 1 = +97。
你看吧,仅仅使用【进制转换】,就完事了!
哪里还需要用到原码反码?
----------------------
实际上,二进制数,它就是数!
什么原码反码补码,都是不存在的事!
不存在,为什么还要讲、还要学、还要考研?
因为,计算机老师讲这些,可以赢得丰厚的利益!
所以,这些老师,才会如此坑人不浅毁人不倦!