El manejo de los binarios me queda claro, pero ya que estamos, colaboro
Java:
System.out.println(Integer.toBinaryString(-1));
Resultado: 11111111111111111111111111111111 [1]
PHP:
echo decbin(-1);
Resultado: 11111111111111111111111111111111 [1]
Iba a hacer también Python, pero aparentemente no hay una función hecha para eso...
El caso es que probablemente cualquier lenguaje en el que se haga una conversión directa tenga el comportamiento [1], ya que es el modo "usual" de representar los enteros negativos (usando el 1º bit para el signo)
El motivo por el que algunos programas procesan diferente el número supongo que viene del hecho de que, al menos en el caso de Octave, son programas de cálculo relativamente complejo que hacen procesos "extra" para, por ejemplo, poder mostrar un entero mayor que maxint...
Ahora, lo que sí me deja extrañado es el comportamiento de kcalc...