我想知道是否有办法在二进制中切换低位。
例如:
01000001 - >
切换低位
- > 01000000
仅更改右侧的最后一位。
如果您不熟悉LC3,它只能进行以下操作:
ADD
和
答案 0 :(得分:3)
这通常是通过XOR操作完成的。
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
答案 1 :(得分:1)
如果最低位为0,则需要添加1。
如果最低位为1,则需要添加-1。
因此,如果输入是 a ,那么:
x = a and 1 ; x = 0/1 depending on lowest bit
x = x + x ; x = 0/2
x = not x ; x = -1/-3
x = x + 2 ; x = +1/-1
r = a + x ; will toggle lowest bit of original a
我假设在LC3中使用了二进制补码负整数值,因此NOT 2 == -3
和-1 + 2 = +1
。
不幸的是我不知道LC3,所以我希望我的步骤相当简单,可以通过LC3指令实现,算法也很有意义。
其他选项是使用NOT
切换位(不是添加):
x = a and (not(1)) ; (0xFFFE in case of 16b word)
; x = copy of all bits of A except bottom bit (bottom bit = 0)
y = not(a) and 1 ; extract toggled bottom bit (1/0)
r = x + y ; compose the value back from the upper:lowest bit(s)
编辑:米奇在他的回答中做了什么。