关于有符号数移位问题

   有符号数,正数最高位为0, 负数最高位为1
   有符号数右移时正数空位填0,负数空位填1


    如:-2(在内存中存储为11111111 11111111 11111111 11111110),负数在内存中存储的形式以补码存储(也就是反码加1)
   

    如果左移4位则a=11111111 11111111 11111111 11100000(在内存存储的格式)
    用%d输出后十进制会是多少呢?
    首先负数在内存中存储的格式转化成十进制后应该先减1再取反,即:a-1(11111111 11111111 11111111 11011111)
    然后除符号位其余取反:10000000 00000000 00000000 00100000则该数值为-32,也就是-2左移4位后变为-32
   
    同理-2右移4位,此时空位填1移动后在内存存储的形式为:11111111 11111111 11111111 11111111
    用%d输出后十进制会是多少呢?
    首先负数在内存中存储的格式转化成十进制后应该先减1再取反,即:a-1(11111111 11111111 11111111 11111110)
    然后除符号位其余取反:10000000 00000000 00000000 00000001则该数值为-1,也就是-2右移4位后变为-1



  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Verilog中,有符号移位可以通过算术右移实现。算术右移需要考虑符号位,右移一位时,如果符号位为1,则在左边补1;否则,补0。这种移位操作可以进行有符号的除法运算,每右移一位相当于除以2的n次方。 Verilog语言可以使用移位减方式实现64位除以32位据的除法器。这种方式资源消耗较少,运算速度约为64个时钟周期,也可以方便地自动修改运算位。 在Verilog中,使用移位运算符进行移位操作。a >> n表示逻辑右移,左边补零;a << n表示逻辑左移,右边补零。这两种移位运算都用0来填补移出的空位。 举个例子来说明:假设有一个有符号start,初始值为0001,我们进行start << 2移位操作,移位后start的值为0100,然后赋给result。这样就实现了有符号移位操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Verilog 中的移位(算术移位, 逻辑移位, 循环移位)](https://blog.csdn.net/Reborn_Lee/article/details/89813616)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [FPGA 64位除法器(Verilog)](https://download.csdn.net/download/XingouChen/13216328)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值