last day (14 days later) » 

05:43
"Было бы неплохо) Я создал в паскале массив bin: array [1..2] of byte = ((0001),(0110)); Программа распознает его элементы как 1 и 110,а мне бы хотелось,чтобы она видела именно двоичные значения."
1 и 110 это вполне себе нормальные данные. Вопрос в том как вы хотите их отображать / использовать
Мне нужно чтобы сеть понимала что,например,кошка и птица это совершенно разные виды,никак не связанные между собой,если бы я задавал их как 1 и 2 то сеть бы думала что они похожи,отличаются на единицу,поэтому нужно задавать их как двоичные 01 и 10 и чтобы программа не распознавала их как 1 и 1.
01 и 10 не будут распознаны как 1 и 1
скажу больше, у вас значения скорее всего типа байт или интеджер, они занимают соответственно 8 или 24 бита
но в отладке такие значения у меня отображаются как 1 и 1 или это только в отладке?
и в памяти они лежат как 00000001 и 00000010
или 00000000 00000000 00000000 00000001 и 00000000 00000000 00000000 00000010
в отладке вы видите числа в десятичном виде
а во вторых, то что вы пишете как 0010 на самом деле это число 10, которое в двоичном виде выглядит как 00001010
вам нужно писать и работать с числами в их двоичном виде
тут уже зависит от того как и куда вы их должны подавать
ага,тогда всё понятно,спасибо) Просто я читал,что если,например,есть два класса,то и мы их представляем в виде 01 и 10,если 4,то 0001,0010,0100 и тд
05:53
имеется ввиду, что это набор флагов/бит. а как конкретно вы их будете обрабатывать (битами, десятично, строкой) - уже детали реализации
проконсультируйтесь с учителем/преподом/заказчиком как должно быть с его точки зрения (чтобу не получить неуд/пару за велосипедостроение)
по теме
да,вы правы,может быть придумаю другой способ,а вроде разобрался. Я изучаю эту тему для себя,а в институте мы не изучали тему нейронных сетей,так что буду разбираться самостоятельно.
если вы передаете 0001, то вы увидите 1, но в программе вы будете смотреть на 1 разряд (value mod 10 = 1), на второй разряд (value div 10 mod 10 = 0) и т.д.
удобнее всего работать с битами
потому что можно делать вот так:
на входе например 10 (1010)
надо будет почитать про представление двоичных данных,в любом случае,спасибо вам большое за помощь!
BIT_BODY = $8;
BIT_TAIL = $4;
BIT_LEGS = $2;
BIT_HEAD = $1;

isHeadWithTailOnly := (value and BIT_TAIL = BIT_TAIL) and (value and BIT_HEAD = BIT_HEAD) and (value and BIT_LEGS = 0) and (value and BIT_BODY = 0);
это называется битовые маски ^
*значок бакса, значит что они задаются в шестнадцитеричном виде, от 0 до F
не приходилось работать с данными в таком виде,так что мне пока сложно всё это понять. Можете объяснить почему,например,у тела $8, какой у него диапазон? И последняя строчка кода,не понимаю для чего она...
06:05
я плохо помню Паскаль, какие там ограничения, так что проверяйте меня
елси не указан тип константы, компилятор выбирает минимальный подходящий тип емнип
в данном случае это будет байт
$8 при переводе из шестнадцатеричного в десятичный дает нам 8, а в двоичном ... 1000
также запомните, везде где вы не видите, всегда можно добавить 0000000 с левой стороны
1000 это тоже самое что и 00001000 и тоже самое что и 0000000000001000
последняя строка кода присваивает переменной isHeadWithTailOnly значени истина или ложь, в зависимости от выражения справа
выражение справа проверяет переменную value на наличие указанных флагов/бит
в данном примере, чтобы были выставлены биты 0100 и 0001, и чтобы не было выставлено 1000 и 0010
то есть выражению удовлетворит ТОЛЬКО значение value = 0101 (наличие только хвоста и головы)
я кажется понимаю логику,но пока сложновато,я ещё внимательно по изучаю тему и ваш пример,ещё раз спасибо)
тяжело в учении - легко в бою ;-)

last day (14 days later) »