while (value != 0 ) /*短除法*/
{
ans [ ++ top ] = value % (- 2 );
value /= (- 2 );
if (ans [ top ] == - 1 ) /*余数应该为1而不是-1*/
{
ans [ top ] = 1 ;
++ value ; /*
(商+1)*(-2)+1 == (商)*(-2)-1 */
}
}