16 int mask0= (
static_cast<int>(-(mask&0xffff)))>>31;
17 mask&=(mask0^0xffff0000);
18 int mask1= (
static_cast<int>(-(mask&0xff00ff)))>>31;
19 mask&=(mask1^0xff00ff00);
20 int mask2= (
static_cast<int>(-(mask&0xf0f0f0f)))>>31;
21 mask&=(mask2^0xf0f0f0f0);
22 int mask3= (
static_cast<int>(-(mask&0x33333333)))>>31;
23 mask&=(mask3^0xcccccccc);
24 int mask4= (
static_cast<int>(-(mask&0x55555555)))>>31;
25 return 31+(mask0&0xfffffff0)+(mask1&0xfffffff8)+
26 (mask2&0xfffffffc)+(mask3&0xfffffffe)+mask4;