Операции с двоичными числами excel

Функция ОСНОВАНИЕ выполняет преобразование числового значение в указанную систему счисления (двоичная, восьмеричная, шестнадцатеричная и т. д.) и возвращает соответствующий результат в виде текстовой строки.

Примеры использования функции ОСНОВАНИЕ в Excel

Пример 1. Для хранения чисел в БД удобно использовать их представление в двоичной системе счисления. Выполнить преобразование представленных значений.

Исходная таблица:

Пример 1.

Для преобразования используем формулу:

ОСНОВАНИЕ.

Описание аргументов:

  • B2 – число, которое требуется преобразовать;
  • 2 – указатель вида системы счисления.

Выполним преобразование для всех чисел. Полученный результат:

преобразование для всех чисел.

Ошибка #ЧИСЛО! Возникла потому, что -56 находится вне диапазона допустимых значений (отрицательное число). Результат вычисления формулы =ОСНОВАНИЕ(0,9;2) эквивалентен результату =ОСНОВАНИЕ(0;2), поскольку рассматриваемая функция усекает дробные значения аргумента число до целых значений.



Перевод числа из одной системы счисления в другую в Excel

Пример 2. Преобразовать числа, записанные в шестнадцатеричной системе счисления в двоичную систему с длиной полученной строки не менее 20 символов.

Таблица значений:

Таблица.

В Excel предусмотрена формула ШЕСТН.В.ДВ, однако она поддерживает значения из диапазона от FFFFFFFE00 до 1FF. Поэтому выполним промежуточное преобразование в десятичную систему и воспользуемся функцией ОСНОВАНИЕ для перевода в двоичную:

Описание аргументов:

  • ШЕСТН.В.ДЕС(A2) – исходное число, преобразованное в десятичную систему счисления;
  • 2 – указание на вид системы счисления;
  • 20 – минимальное количество символов в возвращаемой строке.

Результаты расчетов:

Результаты преобразования.

Сложение чисел в разных системах счисления в Excel

Пример 3. Отобразить результаты сложения двух чисел, записанных в двоичной системе, в виде чисел в десяти- и тридцатидвухричных системах счисления.

Исходная таблица:

Пример 3.

В ячейке A6 запишем следующую формулу:

ДВ.В.ДЕС.

Функция ДВ.В.ДЕС преобразует числа из двоичной в десятеричную систему.

В ячейке B6 запишем формулу:

В данном способе выполняется преобразование в понятную многим десятичную систему счисления, в которой и выполняется операция сложения чисел (вместо, например, алгоритма сложения в столбик в двоичной системе, где необходимо учитывать правила: 0+0=0, 1+1=10 и т. д.). Функцией ОСНОВАНИЕ выполняется преобразование результата в требуемые системы исчисления. Пример расчета:

СУММ.

Особенности использования функции ОСНОВАНИЕ в Excel

Функция имеет следующую синтаксическую запись:

=ОСНОВАНИЕ(число;основание;[минимальная_длина])

Описание аргументов:

  • число – обязательный аргумент, характеризующий числовое значение из диапазона целых чисел от 0 до 253, которое требуется преобразовать к указанной системе счисления.
  • основание – обязательный аргумент, характеризующий числовое значение из диапазона целых чисел от 2 до 36, которое является основанием требуемой системы исчисления.
  • [минимальная_длина] – необязательный аргумент, характеризующий числовое значение из диапазона от 0 до 255, определяющее минимальную длину в символах возвращаемой текстовой строки.

Примечания:

  1. Функция возвращает код ошибки #ЧИСЛО!, если любой из ее аргументов является числовым значением, выходящим за пределы допустимых для данного аргумента значений.
  2. Если один или несколько аргументов являются текстовой строкой, рассматриваемая функция вернет код ошибки #ЗНАЧ!.
  3. Функция доступна только в новых версиях программы (Excel 2013 и более поздних).
  4. В отличие, например, от функции ДЕС.В.ДВ, которая выполняет преобразование чисел из диапазона от -512 до 511, функция ОСНОВАНИЕ выполняет преобразование чисел от 0 до 253.
  5. При явном указании аргумента [минимальная_длина] возможны следующие ситуации:
  • длина полученного значения меньше, чем регламентируется аргументом [минимальная_длина]. В этом случае в начале возвращаемой строки слева будет добавлено определенное количество нулей для достижения требуемой длины;
  • длина рассчитанного значения больше, чем регламентируемая. Функция ОСНОВАНИЕ вернет полученный результат, не урезая его. Например, функция с аргументами (12345;2;20) вернет значение «00000011000000111001», а функция с аргументами (12345;2;2) вернет «11000000111001».

Программист по неволе

24 / 24 / 8

Регистрация: 22.04.2015

Сообщений: 476

Записей в блоге: 1

1

Работа с числами в двоичной системе счисления

02.10.2015, 12:54. Показов 7875. Ответов 3


Студворк — интернет-сервис помощи студентам

Можно в Excel работать с числами в двоичной системе?
Мне надо заполнить столбик таблицы двоичными числами по порядку: 0001 0010 0011 0100…
Разрядов у меня 10, так что делать вручную это проблематично. Подскажите как это можно реализовать?



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

02.10.2015, 13:14

2

Лучший ответ Сообщение было отмечено Alex_From_777 как решение

Решение

Цитата
Сообщение от Alex_From_777
Посмотреть сообщение

Разрядов у меня 10

Формула для строк 1:1023

Код

=--(СТРОКА()>511)&ДЕС.В.ДВ(ОСТАТ(СТРОКА();512);9)



1



2640 / 1697 / 694

Регистрация: 04.09.2015

Сообщений: 3,367

02.10.2015, 14:04

3

Вариант для Excel 2003, у которой нет функции ДЕС.В.ДВ()
Формула для строк 1:1023

Код

=СУММПРОИЗВ(ОКРВНИЗ(ОСТАТ(A1/2^(СТРОКА($1:$10)-1);2);1)*10^(СТРОКА($1:$10)-1))



1



2079 / 1232 / 464

Регистрация: 20.12.2014

Сообщений: 3,237

04.10.2015, 17:30

4



1



 

Добрый день !  

  Подскажите, как в Excel по-XOR-ить 2 ячейки, где записаны числа в двоичном виде побитово в третью ячейку ?  

  т.е. есть ячейка «00001011» и ячейка «00000110», чтоб в результате в третей было «00001101»

 

genyaa

Пользователь

Сообщений: 296
Регистрация: 01.01.1970

Не уверен, что верно понял, что значит «побитово»… Но посмотрите файл. Может подойдет. (Результат выделен рамкой.)

 

{quote}{login=genyaa}{date=06.11.2007 09:26}{thema=}{post}Не уверен, что верно понял, что значит «побитово»… Но посмотрите файл. Может подойдет. (Результат выделен рамкой.){/post}{/quote}  

  Огромное спасибо. Результат такой.  
«побитово», т.е. числа заданы в двоичном виде 8-разрядно, и операция XOR применяется именно между соответствующими разрядами.  

  А можно как-то сделать так, чтоб небыло этих дополнительных ячеек ? ну чтоб была какая-то формула общая в 3ей ячейке, которая сама все сделает.  

  Я вот нашел в интернете такое описание, но не пойму, что с этим делать  

  Defining number of bits  
These function operate on a fixed number of bits. Depending on the number of bits desired, use Insert/Name/Define to define the constant Bits something like:  

  8-bits        =2^(8-ROW(INDIRECT(«1:8»)))  

  x XOR y:  
Result bit is 1 if x-bit is 1 or y-bit is 1, but not if both are 1.  

  =SUMPRODUCT(MOD(MOD(INT(x/Bits),2)+MOD(INT(y/Bits),2),2),Bits)  
x:      00001101    (decimal 13)  
y:      00000111    (decimal 7)  
       ———  
result: 00001010    (decimal 10)

 

genyaa

Пользователь

Сообщений: 296
Регистрация: 01.01.1970

Честно говоря, я запостил недоделанный вариант… поторопился. Проверил работоспособность идеи и запостил… а не доделал. Вот тут доделанный. Вроде работает.

 

genyaa

Пользователь

Сообщений: 296
Регистрация: 01.01.1970

А здесь я добавил результат адоптации найденного Вами на другом сайте решения к русским функциям. Я только добавил преобразование десятичных чисел в двоичные и обратно.

 

{quote}{login=genyaa}{date=06.11.2007 11:11}{thema=}{post}А здесь я добавил результат адоптации найденного Вами на другом сайте решения к русским функциям. Я только добавил преобразование десятичных чисел в двоичные и обратно.{/post}{/quote}  

  genyaa, огромное спасибо ! но я не очень понимаю ,как все это вообще работает.  
Можно какой-то словесный комментарий ?  

  Я взял Ваш файл, все на ячейках А1 и А2 работает замечательно.  
Решил сделать тоже самое на других ячейках, скопировал функцию, поменял в ней А1 и А2 на другие ячейки ,что использую, но оно не работает %) …

 

genyaa

Пользователь

Сообщений: 296
Регистрация: 01.01.1970

{quote}{login=genyaa}{date=06.11.2007 11:11}{thema=}{post}А здесь я добавил результат адоптации найденного Вами на другом сайте решения к русским функциям. Я только добавил преобразование десятичных чисел в двоичные и обратно.{/post}{/quote}  
Ой… оказалось без файла… вот файл.

 

{quote}{login=Михаил}{date=07.11.2007 10:20}{thema=Re: }{post}genyaa, огромное спасибо ! но я не очень понимаю ,как все это вообще работает.  
Можно какой-то словесный комментарий ?{/post}{/quote}  

  Моя формула основана на создании двух массивов (с помощью функций СМЕЩ и СТОЛБЕЦ), значения элементов которых равны значениям каждого соответствующего разряда двоичных чисел (записанных десятичными фактически), находящихся в А1 и А2. Два массива сравниваются между собой поэлементно (по принципу формулы массива) так, чтобы результат сравнения был 1 при неравенстве и 0 при равенстве соответствующих элементов. На основе получающегося массива результатов сравнения формируется десятичное число, равное сумме произведений каждого его элемента на 10 в степени номера позиции этого элемента с конца массива (т.е. в степени разрядности соответствующей цифры результата). А чтобы заглавные нули не отсекались, к результату добавляется еще 10 в степени разрядности разультата плюс 1. Далее полученное число преобразуется в текст и заглавная единица отбрасывается с помощью функции ПРАВСИМВ.  

  {quote}{post}Я взял Ваш файл, все на ячейках А1 и А2 работает замечательно.  
Решил сделать тоже самое на других ячейках, скопировал функцию, поменял в ней А1 и А2 на другие ячейки ,что использую, но оно не работает %) …{/post}{/quote}  

  Нужно просто быть внимательным и немного понимать суть ее решения. Формула большая и любая ошибка в ее редактировании приведет к ее сбою.

 

andy1618

Пользователь

Сообщений: 128
Регистрация: 01.01.1970

{quote}{login=Михаил}{date=06.11.2007 04:02}{thema=Сложение 2х двоичных ячеек по модулю 2}{post}Подскажите, как в Excel по-XOR-ить 2 ячейки, где записаны числа в двоичном виде побитово в третью ячейку ?  
{/post}{/quote}  
Кстати, если изначально числа десятичные, то возможно удобнее написать мелкую VBA-функцию:  
==  
Function BitwiseXOR(num1 As Long, num2 As Long) As Long  
 BitwiseXOR = num1 Xor num2  
End Function  
==

 

{quote}{login=andy1618}{date=07.11.2007 01:14}{thema=Re: Сложение 2х двоичных ячеек по модулю 2}{post}удобнее написать мелкую VBA-функцию:  
{/post}{/quote}  
:-) Это точно!

 

{quote}{login=}{date=07.11.2007 01:38}{thema=Re: Re: Сложение 2х двоичных ячеек по модулю 2}{post}{quote}{login=andy1618}{date=07.11.2007 01:14}{thema=Re: Сложение 2х двоичных ячеек по модулю 2}{post}удобнее написать мелкую VBA-функцию:  
{/post}{/quote}  
:-) Это точно!{/post}{/quote}  

  С функцией пробовал. Есть проблема с ней, которая состоит в том, что эти двоичные числа ни что иное, как коды ASCII, которые получаются не только из чисел, но и из букв, символов и т.д. Иногда XOR-иться код не десятичного числа, а какой-то буквы  

  Все вышенаписанное попытаюсь обобщить и сделать у себя все верно.  
Огромное всем спасибо. Буду решать задачу дальше

 

Что-то не получается у меня :(  
Есть начальные ячейки С5 и С6.  
С5 и С6 — это результат выполнения функции =ШЕСТН.В.ДВ(C4;8) и еще одной =ШЕСТН.В.ДВ  
Числовой формат обоих ячеек — текстовый  

  Не получается в С7 получить верный XOR :(  

  Может у меня формат какой-то не тот данных стоит ?

 

andy1618

Пользователь

Сообщений: 128
Регистрация: 01.01.1970

Если изначально числа шестнадцатиричные, то можно немного доработать функцию:  
==  
Function BitwiseXOR_Hex2Dec(hex1 As String, hex2 As String) As Long  
BitwiseXOR_Hex2Dec = CLng(«&H» + hex1) Xor CLng(«&H» + hex2)  
End Function  
==  

  Либо можно прямо в Hex-е выводить:  
==  
Function BitwiseXOR_Hex2Hex(hex1 As String, hex2 As String) As String  
BitwiseXOR_Hex2Hex = Hex(CLng(«&H» + hex1) Xor CLng(«&H» + hex2))  
End Function  
==

 

ВСЕ ! Всем спасибо, заработало !  

  из кучи решений остановил выбор на вырианте    
=ДЕС.В.ДВ(СУММПРОИЗВ(ОСТАТ(ОСТАТ(ЦЕЛОЕ(ДВ.В.ДЕС(E5)/Bits);2)+ОСТАТ(ЦЕЛОЕ(ДВ.В.ДЕС(E6)/Bits);2);2);Bits);ДЛСТР(E5))  

    Но возникла новая проблема.  
В моих таблицах используется функция =ГПР  
Все, что я делал ранее, свелось к верному получению двоичных кодов. Эти коды по сути — коды ASCII клавиатурных символов. Есть табличка кодов ASCII — код-значение, код-значение и т.д.  

  ГПР я использую, чтобы полученное предварительными рассчетами XOR-значение найти в таблице кодов ASCII и вернуть значение этого кода.  

  В чем ошибка. Буквы большие и малые функция возвращает верно, а вот цифры и символы нет. В чем дело ?  
Функция ГПР же возвращает значение ячейки, она ничего не вычисляет %)  

  Подскажите пожалуйста

 

Вот еще раз сделал.  

  Буквы по таблице находит отлично.  
Если цифры должны получаться — пишет «####» — ошибка «значение недоступно»

 

{quote}{login=Михаил}{date=08.11.2007 02:44}{thema=}{post}Вот еще раз сделал.  

  Буквы по таблице находит отлично.  
Если цифры должны получаться — пишет «####» — ошибка «значение недоступно»{/post}{/quote}  

  А пример в файле показать можно?

 

Можно. Вот пробные рассчеты.  
В ячейках C8 D8 E8 он должен выдавать цыфры 1 2 3 соответственно.  
Как видно ,результат XOR верный.  
Он должен найти этот результат в таблице ASCII и подставить значения 1 2 3.

 

andy1618

Пользователь

Сообщений: 128
Регистрация: 01.01.1970

{quote}{login=Михаил}{date=08.11.2007 02:39}{thema=Re: }{post}ГПР я использую, чтобы полученное предварительными рассчетами XOR-значение найти в таблице кодов ASCII и вернуть значение этого кода.  
{/post}{/quote}  

  Хм, а что мешает напрямую по коду символа вычислять сам символ функцией CHAR()? (в русской версии, наверное, это функция «СИМВОЛ»)

 

andy1618

Пользователь

Сообщений: 128
Регистрация: 01.01.1970

Посмотрел файл — у меня он не работает (функции типа ШЕСТН.В.ДВ глючат при переходе между русским и английским офисами), но не суть.  
Попробуйте у ГПР последним аргументом добавить FALSE (ЛОЖЬ).  
И ещё мелкий момент — в формулах в ячейках C8, D8, … ссылку на массив лучше указывать с долларами. Пример:  
«=ГПР(C7;$B$17:$CR$18;2;ЛОЖЬ)» — тогда такую формулу можно безболезненно растягивать по горизонтали, ссылки на массив не уедут (подозреваю, что вам пришлось их подправлять вручную для каждой ячейки).

 

{quote}{login=andy1618}{date=08.11.2007 03:50}{thema=Re: Re: }{post}{quote}{login=Михаил}{date=08.11.2007 02:39}{thema=Re: }{post}ГПР я использую, чтобы полученное предварительными рассчетами XOR-значение найти в таблице кодов ASCII и вернуть значение этого кода.  
{/post}{/quote}  

  Хм, а что мешает напрямую по коду символа вычислять сам символ функцией CHAR()? (в русской версии, наверное, это функция «СИМВОЛ»){/post}{/quote}  

    Спасибо за идею. Мешало отсутствие знаний, т.к. Excel я никогда не использовал для таких задач. Уже реализовал, вроде работает

 

{quote}{login=andy1618}{date=08.11.2007 04:00}{thema=}{post}Посмотрел файл — у меня он не работает (функции типа ШЕСТН.В.ДВ глючат при переходе между русским и английским офисами), но не суть.  
Попробуйте у ГПР последним аргументом добавить FALSE (ЛОЖЬ).  
И ещё мелкий момент — в формулах в ячейках C8, D8, … ссылку на массив лучше указывать с долларами. Пример:  
«=ГПР(C7;$B$17:$CR$18;2;ЛОЖЬ)» — тогда такую формулу можно безболезненно растягивать по горизонтали, ссылки на массив не уедут (подозреваю, что вам пришлось их подправлять вручную для каждой ячейки).{/post}{/quote}  

    Огромное спасибо ! после добавления «FALSE» все заработало !  

  Попробую привести теперь все это в вид поприличнее.  

  Если кому интересно вдруг, то эта табличка позволяет дешифровывать пароли оборудования Cisco Systems. По ячейкам можно просмотреть весь алгорит шифрования от и до.

 

Подскажите пожалуйста как посчитать сумму по модулю 2? как составить именно таблицу истинности в Excel

 

Guest

Гость

#23

27.09.2010 22:18:53

{quote}{login=Kemper}{date=27.09.2010 10:09}{thema=}{post}Подскажите пожалуйста как посчитать сумму по модулю 2? как составить именно таблицу истинности в Excel{/post}{/quote}  

  Что Вы имеете ввиду?

Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Еще…Меньше

В этой статье описаны синтаксис формулы и использование функции БИТ.И в Microsoft Excel.

Описание

Возвращает результат операции поразрядного И для двух чисел.

Синтаксис

БИТ.И(число1;число2)

Аргументы функции БИТ.И описаны ниже.

  • Число1    Обязательный. Должен быть в десятичной форме и больше 0.

  • Число2.    Обязательный. Должен быть в десятичной форме и больше 0.

Замечания

  • Функция БИТ.И возвращает десятичное число.

  • Результат — поразрядное И параметров функции.

  • Значение каждой битовой позиции считается, только если биты обоих параметров в этой позиции равны 1.

  • Значения битовых позиций увеличиваются справа налево и являются степенями 2. Крайний правый бит возвращает 1 (2^0), бит слева от него — 2 (2^1) и т. д.

  • Если хотя бы один из аргументов меньше 0, bitAND возвращает #NUM! значение ошибки #ЗНАЧ!.

  • Если один из аргументов не является integer или больше (2^48)-1, bitAND возвращает #NUM! значение ошибки #ЗНАЧ!.

  • Если значение любого из аргументов не является числом, то bitAND возвращает #VALUE! значение ошибки #ЗНАЧ!.

Пример

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Формула

Описание

Результат

Принцип действия

=БИТ.И(1,5)

Сравнивает бинарные представления чисел 1 и 5.

1

Двоичное представление 1 — 1, а двоичное представление 5 — 101. Их биты совпадают только в крайней правой позиции. Возвращается как 2^0 или 1.

=БИТ.И(13;25)

Сравнивает бинарные представления чисел 13 и 25.

9

Двоичное представление 13 — 1101, а двоичное представление 25 — 11001. Их биты совпадают в крайней правой позиции и в четвертой позиции справа. Возвращается как (2^0)+ (2^3) или 9.

Десятичное число

Двоичное представление

13

1101

25

11001

К началу страницы

Нужна дополнительная помощь?

Изучим стандартные способы перевода чисел в различные системы счисления в Excel: двоичную, восьмеричную, десятичную и шестнадцатеричную.

Помимо повсеместно распространенной и всем нам хорошо известной десятичной системы счисления также используются и системы с другими основаниями (отличными от 10), например, двоичная, троичная, восьмеричная и т.д.
Большинство из них имеют достаточно широкое применение практически во всех современных электронных устройствах, в программировании или компьютерной документации.

В Excel есть возможность стандартными средствами переводить данные в четырех системах счисления:

Таблица систем счисления
Давайте подробно остановимся на основных вариантах преобразования данных.

Перевод числа из десятичной в двоичную систему в Excel

Для преобразования данных в двоичную запись в Excel существует стандартная функция ДЕС.В.ДВ (имя функции получается как первые буквы от слов ДЕСятичное В ДВоичное, дополнительно разделенное точками):

ДЕС.В.ДВ(число; [разрядность])
Преобразует десятичное число в двоичное.

  • Число (обязательный аргумент) — десятичное целое число, которое требуется преобразовать;
  • Разрядность (необязательный аргумент) — количество знаков для использования в записи.
    Данный аргумент необходим если нужно приписать к двоичной записи данных ведущие нули. К примеру, число 1101 с разрядностью 7 будет иметь вид 0001101.

Обратите внимание, что Excel накладывает определенные ограничения на размер преобразуемых данных.
Двоичная запись не должна занимать более 10 знаков, поэтому десятичное число, соответственно, не должно быть больше 511 или меньше -512, иначе в качестве значения функция ДЕС.В.ДВ вернет ошибку.

Перевод из 10-й записи в 2-ую

Перевод числа из двоичной в десятичную систему в Excel

Для осуществления обратного перевода можно воспользоваться функцией ДВ.В.ДЕС:

ДВ.В.ДЕС(число)
Преобразует двоичное число в десятичное.

  • Число (обязательный аргумент) — двоичное число, которое требуется преобразовать.

При этом разрядность в качестве аргумента функции для десятичной записи не используется.
Как и в случае с функцией ДЕС.В.ДВ при использовании ДВ.В.ДЕС существует ограничение на размер преобразуемых данных — не более 10 знаков в записи, в ином случае функция вернет значение ошибки.

Перевод из 2-й записи в 10-ую

Перевод в других системах счисления

Для других систем счисления (восьмеричной, шестнадцатеричной) также определен набор стандартных формул.
Для удобства мы составили таблицу со схемой выбора формулы для преобразования данных (в левом столбце указано откуда переводим данные, в верхней строчке — куда переводим):

Формулы перевода
Как и в примерах выше имена функций образуются по достаточно простому правилу — берутся первые буквы от названий систем в которых преобразуются данные и разделяются точками (ВОСЬМеричное В ШЕСТНадцатеричное и пр.)

Арифметические операции с данными

Операции в Excel осуществляются в десятичной системе счисления, поэтому при применении арифметических действий (сложение, вычитание и т.д.) для преобразованных данных учитывайте, что конечный результат также будет записан в десятичной записи:

Сложение данных. Неправильный расчет
Чтобы избежать подобной проблемы, необходимо сначала перевести все данные в десятичный вид, произвести требуемые вычисления, а уже затем вновь преобразовать полученный результат в исходную систему счисления:

Сложение данных. Правильный расчет

Удачи вам и до скорых встреч на страницах блога Tutorexcel.ru!

Поделиться с друзьями:
Поиск по сайту:

Понравилась статья? Поделить с друзьями:
  • Операции с векторами в excel
  • Операции с буфером обмена в excel
  • Операции с базами данных excel
  • Операции с адресами ячеек excel
  • Операции редактирования текста в word это