input: Write a function to generate all possible combinations of a given list using bitwise operations.
  assert combinations([1, 2, 3]) == [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
  assert combinations(['a', 'b']) == [[], ['a'], ['b'], ['a', 'b']]
  assert combinations([]) == [[]]
output: def combinations(lst):
      n = len(lst)
      result = []
      for i in range(1 << n):
          combo = [lst[j] for j in range(n) if i & (1 << j)]
          result.append(combo)
      return result