原码、反码、补码之间的转换
一、正整数的原码、反码、补码完全一样,即符号位固定为0,数值位相同
二、负整数的符号位固定为1,由原码变为补码时,规则如下:
1、原码符号位1不变,整数的每一位二进制数位求反,得到反码
2、反码符号位1不变,反码数值位最低位加1,得到补码
三、[+0]补 = [-0]补 = 0
简单运算
- [X+Y]补 = [X]补+[Y]补
- [X-Y]补 = [X]补+[-Y]补
- 补码在运算的过程中 符号位也参与运算
-
注意,两个补码相加后产生了第9位(为1)的溢出,直接丢弃
image.png
OF ZF PF SF CF
标志 | 意义 |
---|---|
ZF | (Zero_FLag)零标志位。运算结果为零则ZF=1,否则ZF=0 |
AF | (Auxiliary_Flag)辅助进位标志位。运算过程中看最后四位,不论长度为多少。最后四位向前有进位或者借位,AF=1,否则AF=0 |
SF | (Sign_Flag)符号标志位。根据具体的长度,指令执行之后将该长度的最高位的值赋给SF |
PF | 反映结果“1”的个数,奇数个“1”就为0,偶数个“1”就为1《就是二进制中1的个数》 |
CF | 最高位有进位或借位就置1 |
OF |
- OF = 1表示溢出,
以下判断依据没有得到有力的证实
*正数+正数=负数 则逻辑上看出 是错误的 即溢出
*负数+负数=正数 则逻辑上看出 是错误的 即溢出
*正数+负数 是互相抵消的 不会产生溢出
*正数-负数=负数 则逻辑上看出(结果应为正) 是错误的 即溢出
*负数-正数=正数 则逻辑上看出(结果应为负) 是错误的 即溢出
*正数-正数 或 负数-负数 二者是互相抵消的 不会产生溢出
进制转换 (含小数)
二进制转十进制
、八进制转十进制
、十六进制转十进制
image.png
十进制转R进制
1.整数部分
image.png
2.小数部分
image.png
二、八、十六进制相互转换
-每位八进制数相当于三位二进制数
-每位十六进制数相当于四位二进制数
image.png
网友评论