C++ SOLUTION
Approach\n Describe your approach to solving the problem. \nFirst of all, calculate the overall bitAnd by looping via the whole array. If the overall bitAnd == 
# Approach\n<!-- Describe your approach to solving the problem. -->\nFirst of all, calculate the overall bitAnd by looping via the whole array. If the overall bitAnd == 1, that implies that some bit is definitely "ON/SET" for all the numbers in the array.\n\nIf the bitAnd==0, then count of the number of splits whenever the bitAnd turns to be 0 while re-iterating through the array.\n\n\n# Complexity\n- Time complexity: $$O(n)$$\n<!-- Add your time complexity here, e.g. $$O(n)$$ -->\n\n- Space complexity: $$O(1)$$\n<!-- Add your space complexity here, e.g. $$O(n)$$ -->\n\n# Code\n```\nclass Solution {\npublic:\n    int maxSubarrays(vector<int>& nums) {\n        int bitAnd=nums[0];\n        for(auto it=1;it<nums.size();it++){\n            bitAnd =(bitAnd & nums[it]);\n        }\n        if(bitAnd) return 1;\n        bitAnd=-1;\n        int split=0;\n        for(int i=0;i<nums.size();i++){\n            if(bitAnd==-1) bitAnd=nums[i];\n            else bitAnd &=nums[i];\n            if(bitAnd==0){\n                bitAnd=-1;\n                split++;\n            }\n        }\n        return split;\n    }\n};\n```
['C++']