Files
BinaryUtils/src/main/kotlin/BinCheck.kt

56 lines
2.0 KiB
Kotlin

package ru.thiflict.binaryutils
/**
* Объект для проверок двоичного кода
*
* Репозиторий: https://git.ds1.thiflict.ru/Thiflict/BinaryUtils
*
* @author Thiflict
*
* @since[1.0.0]
*/
object BinCheck {
/**
* Проверяет наличие единицы в заданом регистре
*
* Тип данных для проверяемого числа [Short].
* Тип данных для проверяемого регистра [Byte]
*
* Регистр *не может быть* **отрицательным** или **больше 15**
*
* Пример:
* ```
* checkRegisterShort(8, 3)
* ```
* @return [Boolean]
* @throws IllegalArgumentException
*/
fun checkRegisterShort(input: Short, register: Byte, verbose: Boolean = false): Boolean {
// Защиты от дурачков
if (register < 0) throw IllegalArgumentException("Проверяемый регистр не может быть отрицательным!")
if (register > 15) throw IllegalArgumentException("Проверяемый регистр не может быть больше, чем количество регистров Short!")
if (verbose) println("Debug: checkRegisterShort(): Выполнена проверка на IllegalArgumentException")
val binaryString = String.format("%16s", input.toInt().toString(2).replace(' ', '0'))
if (verbose) println("Debug: checkRegisterShort(): ${
if (binaryString.startsWith("-")) {
val binaryStringFormatted = binaryString
.drop(1)
.chunked(4)
.joinToString(" ")
"-$binaryStringFormatted"
}
else {
binaryString
.chunked(4)
.joinToString(" ")
}
}")
val index = 15 - register.toInt()
return binaryString[index] == '1'
}
}