我想用
00
,01
,10
,11
代表
A
,B
,C
,D
。
假设我有一个字符串,我想表达所有长度为5的子字符串。这样我就可以表达
AAABB
为0000000101
。
现在,我有一个字符串 s 和一个整数标记,用于表示 s 的子字符串。当我在子串 mark = mark<< 2 |中添加B时1 我的问题是 mark = mark<< 2 |之间的区别是什么1 和标记=标记<< 2 + 1
答案 0 :(得分:1)
可能取决于您使用的语言(请在下次添加标签!),但通常运算符优先级为:+<< |
因此,您实际上是在比较(mark << 2) | 1
和mark << (2+1)
。期待完全不同的结果。
如果您的问题是关于|
(按位OR)和+
(补充),那么我建议您了解每个运算符的作用,然后再回答一个更具体的问题。
如果您想知道:(mark << 2) | 1
和(mark << 2) + 1
返回相同的结果,因为左移保证最后一位为零。
答案 1 :(得分:0)
如前所述,它取决于您使用的编程语言或工具以及它们如何将+视为。
+
通常主要用作加法,所以如果它是二进制加法,结果可能会非常不同。例如,(假设8位数),
01011001 + 000000001 => 01011010
其中,
01011001 | 00000001 => 01011001