⼆进制正负数及0的原码、反码、补码之间的转化(附标志位解
释)
1、0的原码反码补码
0原码是00000000
-0原码是10000000
0反码是00000000
-0反码是11111111
0补码是00000000
补码没有正0与负0之分。
⾸先,计算机都是使⽤⼆进制的补码进⾏计算。
2、⼆进制
1、正数的⼆进制原码、反码、补码都是相同的
2、负数的⼆进制原码:负数的绝对值的⼆进制的最⾼位变为1(1是标志位,只⽤来表⽰正负,1表⽰负数,0表⽰是正数。所以⼋位⼆进制的取值范围是[-127,127]),其余位与正数原码相同。
⽐如-32
第⼀步:32(10)=00100000(2)
第⼆步:最⾼位变为1:10100000
3、负数的反码:等于原码的最⾼位不变,其余取反。
小数的原码⽐如-32
原码为:10100000
反码为:11011111
4、负数的补码:等于原码的最⾼位不变,其余取反,然后加⼀。
⽐如-32
第⼀步,原码为:10100000
第⼆步,最⾼位不变取反:11011111
第三步,加⼀得补码:11100000
原码变成反码:最⾼位不变,其余取反
原码变成补码:最⾼位不变,其余取反之后加⼀。
补码变成移码:补码最⾼符号位取反就是移码。
3、定点⼩数、定点整数和浮点数的范围
(1)16位⽆符号整数范围:0 ~ 216-1,即0~65535
(2)16位原码定点⼩数范围: -(1-2-15)~+(1-2-15)
(3)16位移码定点整数范围: -215~+(215-1) 即-32768~+32767
(4)16位补码定点整数范围: -215~+(215-1) 即-32768~+32767
下述格式浮点数范围:关于原点对称的
最⼤正数:+0.111 1111*21111 1111=+(1-2-7)*2127
最⼩正数:+0.100 0000*20000 0000=+2-1*2-128=+2-129
最⼤负数:-0.100 0000*20000 0000= - 2-1*2-128= - 2-129
最⼩负数:- 0.111 1111*21111 1111= - (1-2-7)*2127
4、标志位解释
1、(进位标志) =1 算术操作最⾼位产⽣了进位或借位, =0 最⾼位⽆进位或借位( =1 则说明了有进位或借位,CF=0 则说明了⽆借位);
2、PF(奇偶标志) =1 数据最低8位中1的个数为偶数,=0 数据最低8位中1的个数为奇数;
3、AF(辅助进位标志) =1 D3→D4位产⽣了进位或借位,=0 D3→D4位⽆进位或借位;
4、(零标志) =1 操作结果为0,=0 结果不为0;
5、(符号标志) =1 结果最⾼位为1 ,=0 结果最⾼位为0;
6、(溢出标志) =1 此次运算发⽣了溢出, =0 ⽆溢出。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论