(1)>>>(算术右移)与>>(逻辑右移)的区别:
逻辑右移就是不考虑符号位,右移一位,左边补零即可。
算术右移需要考虑符号位,右移一位,若符号位为1,就在左边补1,;否则,就补0。
所以算术右移也可以进行有符号位的除法,右移,n位就等于除2的n次方。
例如,8位二进制数11001101分别右移一位。
逻辑右移就是[0]1100110
算术右移就是[1]1100110
(2)<<:(左移位运算符) >>:(右移位运算符)
左移乘于2,右移除以2。
在除法的时候计算的都是无符号数(右移,左侧补0),有符号数的时候是(右移,左侧补1)。
在进行运算的时候,如果式中出现无符号数,默认将会按照无符号数进行处理。
(3)实现循环移位
//实现循环右移
reg [7:0] shifter;
always(posedge clk )
begin
shifter<={shifter[0],shifter[7:1]};
end
//解释:每一次都是把原来的最低位,往最高位搬移一次。
//实现循环左移
reg [7:0] shifter;
always(posedge clk)
begin
shifter<={shifter[6:0],shifter[7]};
end
//每一次都是把原来的最高位,往最低位搬移一次
---------------------
作者:ciscomonkey
原文:https://blog.csdn.net/ciscomonkey/article/details/83660563
(4)
算术左移和逻辑左移一样都是右边补0:
比如 00101011
算术左移一位:01010110
逻辑左移一位:01010110
对于二进制的数值来说左移n位等于原来的数值乘以2的n次方
比如00011010十进制是26,左移两位后是01101000转成十进制是104恰好是26的4倍。
ps:这种倍数关系只适用于左移后被舍弃的高位不含1的情况,否则会溢出。
逻辑右移很简单,只要将二进制数整体右移,左边补0即可
如10101101逻辑右移一位为01010110
算术右移符号位要一起移动,并且在左边补上符号位,也就是如果符号位是1就补1符号位是0就补0
比如:11100算术右移一位为11110(符号位1跟着一起移动并且左边补了1)
对于二进制的数值来说右移n位等于原来的数值除以2的n次方
比如10110100十进制是76(需要先将这个补码转换成原码之后再转换成十进制),右移两位后是11101101转成十进制是19恰好是76的4倍。
ps:这种倍数关系只适用于右移后被舍弃的低位不含1的情况,否则每舍一次1则代表余数被舍去,保留整数部分。
---------------------
作者:狐非
原文:https://blog.csdn.net/yddj5/article/details/52822366
————————————————
版权声明:本文为CSDN博主「李锐博恩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Reborn_Lee/article/details/89813616
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2022-04-12 学生党(办公居多)关于显示器的几个建议