
面试李组长为您分享以下优质知识
二进制小数取补码的过程与整数有所不同,主要分为以下几个步骤:
一、纯小数的补码计算
- 正数补码与原码相同,符号位为0。
- 负数补码为原码符号位不变,数值位按位取反后加1。
数值位转换
- 将小数部分转换为二进制形式,若位数不足需补零扩展到目标字长。
- 例如,将0.101表示为8位时,扩展为0.10100000。
补码生成规则
- 从最低位(小数点后第一位)开始,找到第一个1,将其后的所有位取反(0变1,1变0)。
- 在取反结果末尾加1。
示例:
将0.101转换为8位补码
扩展为0.10100000
取反得1.01011111
加1后为1.01100000(即-0.101的补码)。
二、定点数的补码计算
- 有符号数需在最高位(符号位)后添加与原符号相同的位数。例如,4位补码1100扩展为8位时为11111100,0100扩展为00000100。
数值位转换
- 将小数部分转换为二进制形式,不足时补零。
- 若小数点后位数超过目标字长,需按需舍入(截断或四舍五入)。
补码生成规则
- 符号位保持不变,数值位按位取反后加1。
示例:
将+0.64(1010.0011110111b)转换为8位补码
扩展为1010.0011110111b(左移16位)
取反得0101.1100001001b
加1后为0101.1100001010b(即+0.64的补码)。
三、注意事项
字长选择
- 需根据实际应用确定字长(如8位、16位等),并统一扩展或截断小数部分。
舍入规则
- 超出目标字长时需选择截断或四舍五入,具体方法根据需求确定。
运算一致性
- 补码运算需保持符号位一致,负数运算结果仍用补码表示。
通过以上步骤,可正确计算二进制小数的补码,并进行后续运算。