unsigned balanced_digits( int n ) __override { unsigned counts = 0; while ( n ) { int d = n % 3; n /= 3; if ( d == 2 || d == -2 ) { d /= -2; n -= d; } if ( d == 1 ) counts += 0x0001u; else if ( d == -1 ) counts += 0x0100u; } return counts; }