简单的问题。我知道这是一个合乎逻辑的转变。但它是否意味着它在1?还是只有1?如果它没有在1中移位,那么它是循环移位吗?我已经用Google搜索过了,但那里有很多相互矛盾的信息。感谢。
答案 0 :(得分:3)
向右逻辑右移,1位。
所以1001b>> 1 = 0100
它将向左填充一个0,并将所有位向右移动你正在移位的数字,所以1位。 user3372159是正确的,在处理器中设置一个标志位,该位被移开,但你需要一些汇编知识才能使用它,或者只是使用更多的二进制运算来获得第一位移位之前。
它对许多事情很有用,但特别是用于除以/乘以2。
10 = 1010b
1010b >> 1 = 0101b = 5
0101b << 1 = 1010b = 10
答案 1 :(得分:3)
由于此问题标记为VHDL,A >> 1
是语法错误。
VHDL中的移位运算符sll, sla, srl, sra
为shift [left|right][logical|arithmetic]
,这使得它们首先变得不那么难以理解。
答案 2 :(得分:0)
通常这意味着你向右移1,所以移入的数字几乎总是为零,除非你正在移动进位标志。但是,我从未做过任何vhdl编程。这些知识来自大会。
答案 3 :(得分:0)
也可以用以下方式表达:
(x << k) == (x multiplied by (2 to the power of k))
(x >> k) == (x divided by (2 to the power of k))