原码、反码、补码转换和取反符号的运算规则
⼀、原码,反码,补码之间的转换
1. 正数
正数的原码、反码、补码相同。
以数字10为例:
10(在计算机中int类型是32位,为了简便这⾥以8位来进⾏运算)
原码=反码=补码:0000 1010
2.负数
以数字-5为例来说明:
-5 原:1000 0101
(注:第⼀位为符号位,符号位值等于1,表⽰负数,等于0表⽰正数)
反: 1111 1010
(反码等于原码除符号位外其他位按位取反,所以000 0101取反的结果为111 1010;再 加上符号的1,所以反码为1111 1010)
补:1111 1011
(补码=反码+1)
⼆、取反符号(~) 的运算
~是对全部的位进⾏取反,包括符号位。以例⼦来说明取反的计算过程。
例1:
以5取反的结果为6为例说明:
~5=-6
5 : 原码=反码=补码:0000 0101(这⾥为了⽅便⽤8位来进⾏计算)
(注:进⾏取反运算都是对补码进⾏取反运算的。所以⾸先要算出该数的补码再进⾏取反。)
取反的结果是: 1111 1010
(这⾥取反得到的这个是~5的补码,符号位为1,所以是个负数,我们将这个补码转换为原码 就可直观的计算出结果等于-6) 过程如下:
补码:1111 1010
反码:1111 1001(反码=补码-1)
原码:1000 0110(原码=反码除符号位外其他位按位取反)
即 1000 0110的值就等于 -6。
例2:
~(-10)=9
-10:补码:1111 0110
取反结果:0000 1001(还是⼀样这个得到的还是⼀个补码的形式,转换成原码就可以直观的得 到取反的结果值为 9。) 过程如下:
补码:0000 1001
反码:0000 1001
原码:0000 1001
0000 1001转化为⼗进制数就是 9.
(符号位为0,该值为⼀个正数,所以原反补相同)————————————————————————————————————
这⾥解释⼀下为什么我说⼀个整数的⼆进制位转换成原码可以更直观的计算出它的⼗进制的值。(这个主要是针对负数⽽⾔的)这⾥还是以8位来进⾏计算。
1010 1110 假设这个是⼀个补码,通过这个补码计算出它的⼗进制值如下:
(-1)*2^7+1*2^5+1*2^3+1*2^2+1*2^1=-80
转化为原码计算:
该原码为:1101 0000 计算出⼗进制的过程为:
-(2^6+2^4)=-80
负数二进制补码运算法则⼩结:就是通过补码计算出⼗进制值的时候符号位的1也得计算,但是它是负的。
通过原码计算的时候,符号位为1将它看成⼀个负号就可以了。
(这个⽅法对于⼩⼀点的数来说可能计算起来⽐较⽅便吧)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论