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