Solving the inequality the you gave is not easy, but you can view in a different angle. That is, once an index (of BIT array) [y] is updated, from the tree structure of the BIT (see the meaning of BIT[i] I gave above), you can immediate see that the parent node of [y], which has the index z=y+(y&-y) should be updated, and so is z+(z&-z), and so on and on, until the end of the BIT array.

hi, I think there's something wrong in your explanation part:
"*Example: given an array a[0]...a[7], we use a array BIT[9] to
*epresent a tree, where index [2] is the parent of [1] and [3], [6]
*is the parent of [5] and [7], [4] is the parent of [2] and [6], and
*[8] is the parent of [4]. I.e.,"

To correct:
index [2] is the parent of [1]
index [4] is the parent of [2] and [3]
index [8] is the parent of [4], [6] and [7]
index [6] is the parent of [5]