Добавлены фукнция getFirstHighBitShort()

This commit is contained in:
2026-06-13 22:26:48 +05:00
parent 3c0dbcb519
commit 1dff8fc23b
2 changed files with 93 additions and 0 deletions

View 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
}
}
}