00
,01
,10
,11
代表
A
,B
,C
,D
。
假设我有一个字符串,我想表达的,其长度为5的所有子所以,我可以表达
AAABB
为0000000101
。
现在,我有一个字符串小号和整数标记这是用来表示小号串。当我添加一个B到子字符串mark = mark < < 2 | 1 我的问题是mark = mark < < 2有什么区别2 | 1和标记=标记< < 2 + 1
00
,01
,10
,11
代表
A
,B
,C
,D
。
假设我有一个字符串,我想表达的,其长度为5的所有子所以,我可以表达
AAABB
为0000000101
。
现在,我有一个字符串小号和整数标记这是用来表示小号串。当我添加一个B到子字符串mark = mark < < 2 | 1 我的问题是mark = mark < < 2有什么区别2 | 1和标记=标记< < 2 + 1
可能取决于你所使用的语言(请加下一次标签!),但通常运算符优先级将是:+ < < |
所以你实际上是比较(mark << 2) | 1
和mark << (2+1)
。预计完全不同的结果。
如果您的问题是关于|
(按位或)和+
(加法),那么我鼓励您了解每个操作符的作用,然后返回一个更具体的问题。
如果你想知道:(mark << 2) | 1
和(mark << 2) + 1
返回相同的结果,因为左移保证最后一位为零。
如前所述,它取决于您使用的编程语言或工具以及它们如何对待+。
+
通常主要用作加法,所以如果是二元加法,结果可能会非常不同。例如,(假设8位数字),
01011001 + 000000001 => 01011010
的地方,
01011001 | 00000001 => 01011001
是的,你是对的。不同的结果是由优先级引起的。谢谢! – ygyao