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