Kotlin `shl` no funciona

Estoy intentando aplicar shl a un valor Int en Kotlin:

 val a = 1092455 println(a.toString()) println(toString(bits(one))) println(toString(bits(one shl 16))) println(toString(bits(one shr 16))) 

Esto produce el siguiente resultado:

 1092455 0000000000010000 1010101101100111 0000000000000000 0000000000000000 0000000000000000 0000000000010000 

Como puede ver, shr da como resultado que la parte más a la izquierda de 16 bits ( 0000000000010000 ) se desplace hacia la derecha, aunque shl no da la salida esperada ( 1010101101100111 0000000000000000 ).

¿Qué me estoy perdiendo?

Método de edición: bits :

 fun bits(value: Int): BooleanArray { var x = value.toDouble() val result = BooleanArray (32) for (i in 31 downTo 0) { val d = Math.pow(2.0, i.toDouble()) if (x >= d) { x -= d result[i] = true } } return result } 

Los valores numéricos se firman en Kotlin, para cuando se desplace el valor se desborda en los numbers negativos. Entonces, la implementación de los bits que está utilizando no puede imprimir los bits correctamente.

Así es como funciona para mí:

 val a = 1092455 println((a shr 16).toString(2)) println((a shl 15).toString(2)) println((a shl 16).toString(2)) 

Huellas dactilares:

  10000 1010101101100111000000000000000 -1010100100110010000000000000000 

Eso me parece razonable.

Para corregir su código, use valores Long :

 val a: Long = 1092455 
  • Cómo verificar la function de kotlin varargs usando mockito
  • ¿Qué tipo de dependencia tiene el pepino kotlin?
  • ¿Por qué no puedo pasar la interfaz en kotlin a veces?
  • Kotlin me hace chocar! ¿Es una function o una class cuando leo un código?
  • ¿Ya funciona el modificador de visibilidad "interno" en Kotlin?
  • Kotlin: utilizando los methods estáticos de google-guava como extensiones
  • Cómo establecer el detector de clics y pasar el valor de los campos de text de edición para ver el model utilizando el data binding
  • Pelusa se bloquea en una class de Java leyendo un object Kotlin
  • Error de la database de Kotlin CursorIndexOutOfBoundsException
  • Cómo crear una vista con tabs en anko
  • Error "Extensión con nombre 'android' no existe" al agregar Kotlin a un proyecto de Android