67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
1

Перевод из 2 в 10 и обратно используя операции манипулирования битами

25.10.2020, 17:46. Показов 1000. Ответов 3
Метки нет (Все метки)

Добрый день. Нужно реализовать функции для перевода чиса из двоичной системы в десятичную и наоборот с использованием арифметических операций и операций манипулирования битами. Прошу помочь с данным заданием, так как пока не представляю как задействовать операции манипулирования битами в данной задаче
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2020, 17:46
Ответы с готовыми решениями:

Команды манипулирования битами
Объясните пожалуйста, как сделать вот такое, совершенно не могу понять как это реализовать. ...

TASM. Команды манипулирования битами и TSR - программа перезапуска компьютера по прошествии промежутка времени
Нужна помощь: 1) Из темы "Команды манипулирования битами": каждой паре битов элемента данных...

Как реализовать перевод и 8 и 16-ричной сс в 2 и обратно, не используя существующих функций?
подскажите: как реализовать перевод и 8 и 16-ричной сс в 2 и обратно, не используя существующих...

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

3
Продавец времени
7128 / 4004 / 924
Регистрация: 12.03.2015
Сообщений: 18,833
25.10.2020, 18:06 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool TryBinToLong(char* s, long &x)
{
  x = 0;
  while (*s) 
    switch (*s)
    {
      case 0x30: 
      case 0x31: x = (x << 1) + (*s++ & 1); break;
      default: return false;
    }
    
  return true;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char* void2bin(void* data, size_t size)
{
  char* dest = new char[1 + 8 * size];
  char* ptr = dest;
  uint8_t* b = (uint8_t*)(data) + size - 1;
  
  for (size_t bit = 8 * size; bit--; ptr++)
  {
    *ptr = (*b & (1 << (bit & 7))) ? '1' : '0';
    if (!(bit % 8)) b--;
  } 
  
  dest[8 * size] = 0;
  return dest;
}
1
67 / 42 / 30
Регистрация: 26.03.2019
Сообщений: 269
27.10.2020, 14:50  [ТС] 3
Цитата Сообщение от Verevkin Посмотреть сообщение
char* void2bin(void* data, size_t size)
Не совсем понимаю, чем обусловлена сигнатура функции. Почему в качестве входящей переменной (в общем случае - double, так как по заданию переводятся числа) и что в себе хранит переменная size?
0
2414 / 1160 / 429
Регистрация: 08.11.2016
Сообщений: 3,232
27.10.2020, 18:08 4
SoBadDay, уаказатель на void потому, что численные типы могут быть разные - это своего рода имитация шаблона, в функцию передается указатель на переменную (можно передать через взятие адреса от переменной оператор & - приведенный к указателю на void) и размер переменной в байтах который определяется через sizeof(<имя переменной>) далее в функции происходит побайтовая обработка переданного числа через приведение указателя на void к типу указатель на unsigned char (uint8_t - его псевдоним). Результат обработки записывается в си-строку. К стати можете подумать над тем, как по аналогии с void2bin переделать TryBinToLong в tryBinToVoid
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.10.2020, 18:08
Помогаю со студенческими работами здесь

Перевод из двоичной системы счисления в шестнадцатиричную, используя битовые операции
Формулировка задачи: &quot;Разработать программу, которая переводит число из двоичной системы счисления...

Операции с битами
Дано целое число A и натуральное число i. Выведите число, которое получается из числа A установкой...

операции с битами
Составить программу , которая переводит восьмеричное число А в десятичное число. Вывести...

Операции с битами
Напишите программу, которая принимает с клавиатуры целое число типа int и подсчитывает в нем...

Операции с битами
Напишите программу, которая меняет порядок битов в символе на противоположный. Программа должна...

Операции с битами
Помогите, пожалуйста написать программу, которая изменяет значение указаного бита произвольного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru