CE162Lce01的学习记录

这篇博客详细介绍了不同数制间的转换方法,包括十进制与二、八、十六进制之间的转换,以及如何进行小数的转换。对于整数,使用短除法和位权相加法;对于小数,通过乘目标进制取整来实现。此外,文章还深入探讨了无符号和有符号二进制数的运算,如加法、减法、乘法和除法,并重点讲解了补码运算,包括补码的加减法、乘法和除法。补码的转换和运算在计算机系统中尤其重要,因为它用于表示和处理负数。
摘要由CSDN通过智能技术生成

数制转化

整数转化

  1. 短除法和位权相加法都能进行这四种进制的相互转换,只是在某些情况下较困难
  2. 十进制转二、八、十六进制时用短除法
  3. 二、八、十六进制转十进制时用位权相加法
  4. 二进制转八、十六进制用合位+位权相加法
  5. 八、十六进制二转进制用拆位拼接法
  6. 八进制和十六进制的互相转换用借桥法

十进制转其他

短除法:除以目标进制,保留余数,直到商为0,余数逆序排列为结果

其他转十进制

权位相加法:把各数位乘权的i次方后相加

二进制转八或十六

第一位0表示八进制 0x表示十六进制
合位+权位相加法:从低到高,以3位或4位为一组,高位不够补0,组内用二进制转十进制方法

八或十六转二进制

拆位拼接法:每个数均转化为二进制再拼起来

八与十六互转

借桥法:先转成二或十进制再转(感觉先转成2比较快)

小数转化

十进制转其他

  • 小数部分乘目标进制,然后取整,直至乘积为整数或达到精度
  • 第一取整数为小数点后第一位

其他转十进制

  • 小数部分各位乘权的-i次方后相加

其他转换

  • 拆位合位

无符号二进制数运算

加法

感觉确实没有什么要注意的

减法

  • 0-1=-11
  • 借一为二:借1后就组成10 就是2

乘法

  • 正常乘法 注意移位
  • 部分积 求和

除法

  • 0/1=0
  • 1/1=1
  • 除数不能为0
  • 除尽或达到精度为止

有符号

机器数
无符号数
有符号数
原码
反码
补码

原码(Sign-Magnitude)

  • 正数符号位0 负数符号位1
  • 0有两种表示方法
  • 1比特(bit)=1位二进制数
  • 1字节(byte)=8位二进制数
  • 半字节(nibble)=4位二进制数

反码(1’s Complement)

  • 正数反码与原码相同
  • 负数反码:符号位为1 数值位对应取反
  • 0有两种表示方法

补码(2’s Complement)

  • 正数补码与原码相同
  • 负数补码:符号位为1 数值位对应取反 最低位加1
    • 原→补简便方法:符号位为1 从右找1 留1不变 其余取反
    • 反→补简便方法:符号位为1 从右找0 含0取反 其余不变
  • 0的表示唯一
  • 补码的补码=原码

补码的加减法

  • 加法:嗯加
  • 减法:(A)-(B)=(A)+(-B) 转换为加法
  • 溢出(Overflow):仅发生在两个相同符号数相加的情况下
    • 正溢出:大于最大正数
    • 负溢出:小于最小负数
    • 数值范围
      • 原/反码 -(2n-1-1) ~ +(2n-1-1)
      • 补码 -2n-1 ~ +(2n-1-1)
    • 溢出判断:最高位进位位与次高位进位位不同时发生溢出
      • 最高位进位位为0 次高位为1 正溢出
      • 最高位进位位为1 次高位为0 负溢出
      • 手算判断法:符号位扩充为两位*(0→00,1→11) 结果符号位为10或01则溢出

补码的乘法(shift-add)(Booth)

阿巴了很久终于会了

  • 计算被乘数X和乘数Y的补码 双符号位

  • 初始化累加寄存器A为0 双符号位

  • 计算被乘数[-X] 双符号位

  • Yn+1初始化为0

  • A Y Yn+1 (这是算式排布)

  • 判断最后两位 进行相应运算操作 (可能会出现进位可以省略 )

    Yn(高位)Yn+1(低位)运算操作
    00A右移
    01(A + X)右移
    10(A - X)右移
    11A右移
  • 右移 除第一位外整体右移 Yn+1为新的第一位 新的第二位根据第三位补

  • 循环次数 = Y有效位数

  • 校正时 再根据最后两位进行相应的运算操作

  • 去掉Y最后两位 改为单符号位

  • 完成!

补码的除法

阿巴了很久很久终于会了

  • 不恢复余数除法要求:|被除数X|<|除数Y|

  • 计算X Y [-Y] 双符号位

  • 余数ri(这是算式排布)

  • 初始化余数r0=X 商=0 位数比双符号位补码少两位 缺最后一位

  • 比较r0与Y符号 同号商最后一位商1 异号商0 并进行相应运算操作 (可能会产生进位可忽略)

    ri与Y符号运算操作
    同号1[ri+1] = [ri]左移 - Y
    异号0[ri+1] = [ri]左移 - Y
  • 循环次数 = Y有效位数

  • 商校正 商的首位+1 末位补1 其余不变

  • 余数校正 左移n次 r = [rn] * 2-n

按位运算

  • 置1 0x?? | 0xFF
  • 清0 0x?? & 0x00
  • 测试是否为1 0x?? & 0xFF
  • 测试是否为0 0x?? | 0x00
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值