Добавлены фукнция getFirstHighBitShort()
This commit is contained in:
50
src/main/kotlin/BinGetters.kt
Normal file
50
src/main/kotlin/BinGetters.kt
Normal file
@@ -0,0 +1,50 @@
|
||||
package ru.thiflict.binaryutils
|
||||
|
||||
/**
|
||||
* Объект для получения каких либо данных из вводимого числа
|
||||
*
|
||||
* Репозиторий: https://git.ds1.thiflict.ru/Thiflict/BinaryUtils
|
||||
*
|
||||
* @author Thiflict
|
||||
*
|
||||
* @since[1.0.2]
|
||||
*/
|
||||
|
||||
object BinGetters {
|
||||
|
||||
/**
|
||||
* Возвращает индекс первого старшего бита из вводимого числа.
|
||||
* Если в числе нет старшего бита, то возвращает `null`
|
||||
*
|
||||
* Тип данных для проверяемого числа: [Short].
|
||||
*
|
||||
* Пример:
|
||||
* ```
|
||||
* getFirstHighBitShort(67)
|
||||
* ```
|
||||
* @return [Byte]
|
||||
* @since[1.0.2 не тестировалось на отрицательные числа]
|
||||
*/
|
||||
fun getFirstHighBitShort(input: Short): Byte? {
|
||||
return run {
|
||||
// Для числа 0 возвращаем null
|
||||
if (input == 0.toShort()) {
|
||||
return null
|
||||
}
|
||||
|
||||
// Используем bitwise operations для корректной работы с отрицательными числами
|
||||
var value = input.toInt() and 0xFFFF // Преобразуем в беззнаковое 16-битное число
|
||||
var result: Byte? = null
|
||||
|
||||
// Ищем первый установленный бит с начала (от старших к младшим)
|
||||
for (index in 15 downTo 0) {
|
||||
if (value and (1 shl index) != 0) {
|
||||
result = index.toByte()
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user