移位操作 双符号位

有符号数的移位操作—算术移位
众所周知 机器数(被数字化的数)为正时
原码 补码 反码 左移右移都补0

机器数为负时
左移右移的原理 是某数乘以或除以2^n
本质是小数点右移或左移 但数相对于小数点来说朝相反的方向移动 

当原码 补码 反码 ×/÷2^n
符号位是不变的 只需移动数值部分


用双符号位来表示数呢
1、为什么最高符号位永远上真正的符号位 
2、为什么在算术移位时 只有高符号位保留不变 而低符号位要参与移位 
例:原码  00.001101
       ①乘以2^1 左移 
       00.001101+00.001101=00.011010
       ②乘以2^2 左移
       00.011010+00.011010=00.110100
       ③乘以2^3 左移
       00.110100+00.110109=01.1010000
       低符号位已变
       ④乘以2^4 左移

       01.101000*2=11.010000
终于☒好累 班主任叫我☒一会儿再写
      最高符号位变了 若是直接舍去低位符号位的进位呢?01.010000
正数 但是移位后舍去了一位 


      ③中01.101000除以2^1呢?
      右移
      01.101000*2^-1=00.110100
      高位是补0的
      ②中00.110100除以2^1
      00.110100*2^-1=00.011010


      补码-00.001101—>11.110011
      乘以2^1 左移 (00.011010)
      2^2-00.011010=11.100110
      乘以2^2 左移  (00.110100)
      2^2-00.110100=11.001100
     乘以2^3 左移   (01.101000)
     2^2-01.101000=10.011000

     将01.101000(10.011000)除以2^1 右移  
     —>00.110100
     2^2-00.110100=11.001100
     除以2^2 右移2位
      原—>00.011010
     2^2-00.011010=11.100110
    除以2^3 右移3位                                              原—>00.001101                                                 2^2-00.001101=11.110011

   

    


      
      
 

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值