cpp中的移位运算符原理是二进制的原码反码补码,因此在二分法中,用 mid = l + r >> 1找中点的时候,这行的意思是不是 1 表示 2^1,然后 (l + r) / 2 , 如果是 l + r >> 2,表示的就是 2^2, (l + r) / 4 ,以此类推。左移运算符 << 表示乘,右移表示除?
为什么不直接用mid = (l + r) / 2,是因为这样的话敲得字少然后习惯了吗。刚学cpp没看得懂这行,查了一下上述是我的理解,不知道准确不准确
cpp中的移位运算符原理是二进制的原码反码补码,因此在二分法中,用 mid = l + r >> 1找中点的时候,这行的意思是不是 1 表示 2^1,然后 (l + r) / 2 , 如果是 l + r >> 2,表示的就是 2^2, (l + r) / 4 ,以此类推。左移运算符 << 表示乘,右移表示除?
为什么不直接用mid = (l + r) / 2,是因为这样的话敲得字少然后习惯了吗。刚学cpp没看得懂这行,查了一下上述是我的理解,不知道准确不准确
望采纳!!!点击回答右侧采纳即可!!
你的理解是正确的,但是你可能没有考虑到右移运算符的优势。右移运算符比除法运算符更快,因为它只需要一步操作,而除法运算符需要多步操作。因此,在某些情况下,使用右移运算符可以提高程序的运行效率。