Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Разбить по разрядам двоичное представление числа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Разбить по разрядам двоичное представление числа
NikolayPetrovich Дата: Воскресенье, 04.06.2017, 09:25 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 2 ±
Замечаний: 20% ±

Excel 2007
Прошу помощи!
Суть проблемы: десятичное число преобразую в двоичное и затем по маске нужно выделить нужный бит (это будет 0 или 1).
Преобразовать - все понятно, а вот как выделить нужный бит - ума не хватает.
Пример:
Десятичное число 5. Двоичное - 0101.
В ячейке В1 (условно) нужно выделить старший бит (0)
В ячейке В2 (условно) нужно выделить третий бит (1)
В ячейке В3 (условно) нужно выделить второй бит (0)
В ячейке В4 (условно) нужно выделить младший бит (1)
ПОМОГИТЕ!!! Всегда выручали!


Лучше семь раз покрыться потом, чем один раз инеем!

Сообщение отредактировал NikolayPetrovich - Воскресенье, 04.06.2017, 09:36
 
Ответить
СообщениеПрошу помощи!
Суть проблемы: десятичное число преобразую в двоичное и затем по маске нужно выделить нужный бит (это будет 0 или 1).
Преобразовать - все понятно, а вот как выделить нужный бит - ума не хватает.
Пример:
Десятичное число 5. Двоичное - 0101.
В ячейке В1 (условно) нужно выделить старший бит (0)
В ячейке В2 (условно) нужно выделить третий бит (1)
В ячейке В3 (условно) нужно выделить второй бит (0)
В ячейке В4 (условно) нужно выделить младший бит (1)
ПОМОГИТЕ!!! Всегда выручали!

Автор - NikolayPetrovich
Дата добавления - 04.06.2017 в 09:25
Che79 Дата: Воскресенье, 04.06.2017, 10:12 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1649
Репутация: 306 ±
Замечаний: 0% ±

2013 Win, 365 Mac
NikolayPetrovich, здравствуйте. Если правильно понял задачу. В A2 исходное двоичное число, в В1 формула, протягиваемая по строкам
Код
=ПСТР($A$2;СТРОКА(C1);1)

[p.s.] Что-то голова не думает с утра. Дайте теме более конкретное название, отражающее суть задачи. Как пример , "Извлечение нужного бита из двоичного числа". Мои извинения модераторам за ответ в теме с неконкретным названием.
К сообщению приложен файл: 040617.xlsx (9.0 Kb)


Делай нормально и будет нормально!

Сообщение отредактировал Che79 - Воскресенье, 04.06.2017, 10:26
 
Ответить
СообщениеNikolayPetrovich, здравствуйте. Если правильно понял задачу. В A2 исходное двоичное число, в В1 формула, протягиваемая по строкам
Код
=ПСТР($A$2;СТРОКА(C1);1)

[p.s.] Что-то голова не думает с утра. Дайте теме более конкретное название, отражающее суть задачи. Как пример , "Извлечение нужного бита из двоичного числа". Мои извинения модераторам за ответ в теме с неконкретным названием.

Автор - Che79
Дата добавления - 04.06.2017 в 10:12
NikolayPetrovich Дата: Воскресенье, 04.06.2017, 15:20 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 2 ±
Замечаний: 20% ±

Excel 2007
Che79. Спасибо за подсказку, но к сожалению, к решению это не привело. У меня максимальное десятичное число - 65535, а функция ДЕС.В.ДВ обрабатывает максимально 511. При большем значении - ошибка!
Что мне нужно сделать:
1. Преобразовать десятичные числа из столбца В (Канал 1) в двоичные в столбец D (Двоичное число 1). (при этом размер столбца В заранее не известен. Максимально возможно за сутки - 8640 значений. Если захватить несколько суток, то это значительно увеличит количество чисел.)
2. Подобным образом преобразовать столбец С в столбец Е.
3. В ячейку F2 записать первый (младший разряд) из ячейки D2. В ячейку G2 второй разряд из двоичного числа ячейки D2. И т.д..
4. Столбцы F, G, ... и т.д. преобразовать в диапазоны (думаю, что справлюсь).
5. Просуммировать единицы в каждом диапазоне на отдельном листе (это будет итог работы за некоторый период времени). И заодно отчёт.
Если у кого есть идеи и подсказки, прошу помочь.
Заранее благодарен.
К сообщению приложен файл: 8179412.xlsx (24.6 Kb) · 2017_06_04.csv (10.1 Kb)


Лучше семь раз покрыться потом, чем один раз инеем!
 
Ответить
СообщениеChe79. Спасибо за подсказку, но к сожалению, к решению это не привело. У меня максимальное десятичное число - 65535, а функция ДЕС.В.ДВ обрабатывает максимально 511. При большем значении - ошибка!
Что мне нужно сделать:
1. Преобразовать десятичные числа из столбца В (Канал 1) в двоичные в столбец D (Двоичное число 1). (при этом размер столбца В заранее не известен. Максимально возможно за сутки - 8640 значений. Если захватить несколько суток, то это значительно увеличит количество чисел.)
2. Подобным образом преобразовать столбец С в столбец Е.
3. В ячейку F2 записать первый (младший разряд) из ячейки D2. В ячейку G2 второй разряд из двоичного числа ячейки D2. И т.д..
4. Столбцы F, G, ... и т.д. преобразовать в диапазоны (думаю, что справлюсь).
5. Просуммировать единицы в каждом диапазоне на отдельном листе (это будет итог работы за некоторый период времени). И заодно отчёт.
Если у кого есть идеи и подсказки, прошу помочь.
Заранее благодарен.

Автор - NikolayPetrovich
Дата добавления - 04.06.2017 в 15:20
buchlotnik Дата: Воскресенье, 04.06.2017, 15:33 | Сообщение № 4
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
NikolayPetrovich, дайте теме более конкретное название.
Числа в пределах 65535, хоть и с бубном, в двоичный вид преобразовать можно.
Что касается вопросов начиная с 3-его - см. правила форума


Сообщение отредактировал buchlotnik - Воскресенье, 04.06.2017, 15:36
 
Ответить
СообщениеNikolayPetrovich, дайте теме более конкретное название.
Числа в пределах 65535, хоть и с бубном, в двоичный вид преобразовать можно.
Что касается вопросов начиная с 3-его - см. правила форума

Автор - buchlotnik
Дата добавления - 04.06.2017 в 15:33
NikolayPetrovich Дата: Воскресенье, 04.06.2017, 15:38 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 2 ±
Замечаний: 20% ±

Excel 2007
Подскажите, пожалуйста, как переименовать тему. Больше подойдет "Подсчет моточасов". Честное слово, не знаю как это сделать. Тему создал под утро после бессонной ночи, занимался с модулем МСД. Данные с него получил, а вот как это привести к удобоперевариваемому виду не хватает знаний!


Лучше семь раз покрыться потом, чем один раз инеем!

Сообщение отредактировал NikolayPetrovich - Воскресенье, 04.06.2017, 15:41
 
Ответить
СообщениеПодскажите, пожалуйста, как переименовать тему. Больше подойдет "Подсчет моточасов". Честное слово, не знаю как это сделать. Тему создал под утро после бессонной ночи, занимался с модулем МСД. Данные с него получил, а вот как это привести к удобоперевариваемому виду не хватает знаний!

Автор - NikolayPetrovich
Дата добавления - 04.06.2017 в 15:38
buchlotnik Дата: Воскресенье, 04.06.2017, 15:50 | Сообщение № 6
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
У вас первая задача - преобразовать число более 511 из десятичного представления в двоичное - так и назовите
Формула монструозная, но простая по сути:
Код
=ШЕСТН.В.ДВ(ПСТР(ПОВТОР(0;4-ДЛСТР(ДЕС.В.ШЕСТН(B2)))&ДЕС.В.ШЕСТН(B2);1;1);4)&ШЕСТН.В.ДВ(ПСТР(ПОВТОР(0;4-ДЛСТР(ДЕС.В.ШЕСТН(B2)))&ДЕС.В.ШЕСТН(B2);2;1);4)&ШЕСТН.В.ДВ(ПСТР(ПОВТОР(0;4-ДЛСТР(ДЕС.В.ШЕСТН(B2)))&ДЕС.В.ШЕСТН(B2);3;1);4)&ШЕСТН.В.ДВ(ПСТР(ПОВТОР(0;4-ДЛСТР(ДЕС.В.ШЕСТН(B2)))&ДЕС.В.ШЕСТН(B2);4;1);4)
Остальное через ПСТР
К сообщению приложен файл: 1628393.xlsx (36.0 Kb)


Сообщение отредактировал buchlotnik - Воскресенье, 04.06.2017, 16:11
 
Ответить
СообщениеУ вас первая задача - преобразовать число более 511 из десятичного представления в двоичное - так и назовите
Формула монструозная, но простая по сути:
Код
=ШЕСТН.В.ДВ(ПСТР(ПОВТОР(0;4-ДЛСТР(ДЕС.В.ШЕСТН(B2)))&ДЕС.В.ШЕСТН(B2);1;1);4)&ШЕСТН.В.ДВ(ПСТР(ПОВТОР(0;4-ДЛСТР(ДЕС.В.ШЕСТН(B2)))&ДЕС.В.ШЕСТН(B2);2;1);4)&ШЕСТН.В.ДВ(ПСТР(ПОВТОР(0;4-ДЛСТР(ДЕС.В.ШЕСТН(B2)))&ДЕС.В.ШЕСТН(B2);3;1);4)&ШЕСТН.В.ДВ(ПСТР(ПОВТОР(0;4-ДЛСТР(ДЕС.В.ШЕСТН(B2)))&ДЕС.В.ШЕСТН(B2);4;1);4)
Остальное через ПСТР

Автор - buchlotnik
Дата добавления - 04.06.2017 в 15:50
NikolayPetrovich Дата: Воскресенье, 04.06.2017, 15:59 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 2 ±
Замечаний: 20% ±

Excel 2007
Спасибо за отзыв. Вечером буду разбираться. И за справедливую критику тоже. Постараюсь быть более внимательным при создании темы. Спасибо!


Лучше семь раз покрыться потом, чем один раз инеем!
 
Ответить
СообщениеСпасибо за отзыв. Вечером буду разбираться. И за справедливую критику тоже. Постараюсь быть более внимательным при создании темы. Спасибо!

Автор - NikolayPetrovich
Дата добавления - 04.06.2017 в 15:59
vikttur Дата: Воскресенье, 04.06.2017, 16:02 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Код
=ДЕС.В.ДВ(ЦЕЛОЕ(B2/512))&ДЕС.В.ДВ(ОСТАТ(B2;512);9)
 
Ответить
Сообщение
Код
=ДЕС.В.ДВ(ЦЕЛОЕ(B2/512))&ДЕС.В.ДВ(ОСТАТ(B2;512);9)

Автор - vikttur
Дата добавления - 04.06.2017 в 16:02
Che79 Дата: Воскресенье, 04.06.2017, 16:04 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1649
Репутация: 306 ±
Замечаний: 0% ±

2013 Win, 365 Mac
Цитата NikolayPetrovich, 04.06.2017 в 15:38, в сообщении № 5 ()
как переименовать тему
В режиме редактирования своего первого поста. Кликаете на "Правка" - меняете название темы - сохраняете пост.


Делай нормально и будет нормально!
 
Ответить
Сообщение
Цитата NikolayPetrovich, 04.06.2017 в 15:38, в сообщении № 5 ()
как переименовать тему
В режиме редактирования своего первого поста. Кликаете на "Правка" - меняете название темы - сохраняете пост.

Автор - Che79
Дата добавления - 04.06.2017 в 16:04
Светлый Дата: Воскресенье, 04.06.2017, 16:12 | Сообщение № 10
Группа: Друзья
Ранг: Старожил
Сообщений: 1843
Репутация: 522 ±
Замечаний: 0% ±

Excel 2013, 2016
Если двоичные числа требуются только как промежуточные и нигде больше не нужны, то любой бит из любого числа можно извлечь простой формулой:
Код
=ОСТАТ(ОТБР(Число/2^Разряд);2)


Программировать проще, чем писать стихи.
 
Ответить
СообщениеЕсли двоичные числа требуются только как промежуточные и нигде больше не нужны, то любой бит из любого числа можно извлечь простой формулой:
Код
=ОСТАТ(ОТБР(Число/2^Разряд);2)

Автор - Светлый
Дата добавления - 04.06.2017 в 16:12
buchlotnik Дата: Воскресенье, 04.06.2017, 16:13 | Сообщение № 11
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
vikttur, классный вариант
 
Ответить
Сообщениеvikttur, классный вариант

Автор - buchlotnik
Дата добавления - 04.06.2017 в 16:13
vikttur Дата: Воскресенье, 04.06.2017, 16:37 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Если нужно отображать всегда 16 разрядов:
Код
=ДЕС.В.ДВ(ЦЕЛОЕ(B2/512);7)&ДЕС.В.ДВ(ОСТАТ(B2;512);9)

Хотя такая конструкция позволяет отображать в двоичном представлении десятичное число 262143 (до 18 двоичных знаков включительно)


Сообщение отредактировал vikttur - Воскресенье, 04.06.2017, 16:41
 
Ответить
СообщениеЕсли нужно отображать всегда 16 разрядов:
Код
=ДЕС.В.ДВ(ЦЕЛОЕ(B2/512);7)&ДЕС.В.ДВ(ОСТАТ(B2;512);9)

Хотя такая конструкция позволяет отображать в двоичном представлении десятичное число 262143 (до 18 двоичных знаков включительно)

Автор - vikttur
Дата добавления - 04.06.2017 в 16:37
jakim Дата: Воскресенье, 04.06.2017, 19:34 | Сообщение № 13
Группа: Друзья
Ранг: Старожил
Сообщений: 1210
Репутация: 314 ±
Замечаний: 0% ±

Excel 2010
Предлагаю формулу-гигант для 42 двоичных знаков.
К сообщению приложен файл: hes2bin.xlsx (11.7 Kb)
 
Ответить
Сообщение
Предлагаю формулу-гигант для 42 двоичных знаков.

Автор - jakim
Дата добавления - 04.06.2017 в 19:34
NikolayPetrovich Дата: Воскресенье, 04.06.2017, 21:01 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 22
Репутация: 2 ±
Замечаний: 20% ±

Excel 2007
Светлый, ОЧЕНЬ красивое решение!!! А, главное, даже не знаю, что сказать. Огромное спасибо!
Благодарю, что поменяли название темы. Такое название подходит больше. И разъяснили!


Лучше семь раз покрыться потом, чем один раз инеем!

Сообщение отредактировал NikolayPetrovich - Воскресенье, 04.06.2017, 21:02
 
Ответить
СообщениеСветлый, ОЧЕНЬ красивое решение!!! А, главное, даже не знаю, что сказать. Огромное спасибо!
Благодарю, что поменяли название темы. Такое название подходит больше. И разъяснили!

Автор - NikolayPetrovich
Дата добавления - 04.06.2017 в 21:01
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!