Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/246: Рейтинг темы: голосов - 246, средняя оценка - 4.83
goomer
1

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

25.02.2011, 14:14. Показов 46676. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть число типа int[64] в памяти компьютера оно (как собственно и вообще все) хранится как двоичное. И есть массив bool[64]. Надо без особых потерь в скорости (тоесть желательно не получая заданное число делением intа и нахождением остатка ведь оно уже есть в памяти) перенести двоичное представление этого числа в массив. Причем именно так как оно записано в памяти. хотя бы как прочитать число из памяти как двоичное? должны же быть какие то встроенные процедуры или методы. Очень надеюсь на вашу помощь т.к. в интернете ничего работающего напрямую а не через строки например или хотя бы более или менее быстро не нашел а в данном случае скорость имеет немаловажное значение. Буду очень благодарен любой помощи.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2011, 14:14
Ответы с готовыми решениями:

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

Из двоичного числа в десятичное
Здравствуйте, помогите решить проблему. Как стандартными средствами C# перевести двоичное число в...

Перевод двоичного числа в десятичное
помогите,пожалуйста,не получается правильно перевести число в десятичку! string...

Вычисление максимальную степень двойки двоичного числа
Как вычислить максимальную степень двойки в двоично числе? Написал вот такую функцию ,но проблема в...

13
Кодило
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
25.02.2011, 14:31 2
Вот в поиске вторая же тема.
Перевод из десятичной системы счисления в двоичную:
C#
1
2
3
4
5
6
7
        public static string FuncTo2(int chislo)
        {
            if (chislo == 1)
                return "1";
            else
                return FuncTo2(chislo / 2) + (chislo % 2);
        }
Правда, тут через строки, но чем это не устраивает?
2
goomer
25.02.2011, 15:01 3
Спасибо. Способ действительно рабочий но хотелось бы что нибудь работающее напрямую просто потому что данная процедурка будет висеть в огромнейшем цикле идущем от максимального значения int[64] до минимального большое количество раз и не хотелось бы терять время каждый раз на такое преобразование пусть немного но в масштабе всего цикла это будут большие потери.
Заблокирован
25.02.2011, 15:46 4
немного ускорить можно так:
C#
1
2
3
4
    public static string FuncTo2(UInt64 chislo)
    {
        return (chislo == 1)?"1":FuncTo2(chislo >>= 1) + (chislo & 1);
    }
0
194 / 193 / 17
Регистрация: 07.11.2010
Сообщений: 477
23.03.2011, 22:36 5
Dzhej-Dzhej, ошибка где-то (попробуй на числе 12 проверить)
0
0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 13
02.04.2011, 19:03 6
Цитата Сообщение от Leax Посмотреть сообщение
Dzhej-Dzhej, ошибка где-то (попробуй на числе 12 проверить)
А как получить набор бинарного кода для звукового сигнала? Что бы можно било отфильтровать при помощи формул, а потом его воспроизвести.
0
26 / 26 / 7
Регистрация: 03.03.2011
Сообщений: 35
03.04.2011, 01:52 7
Может быть, подойдет BitArray ?
Правда, работает для Int32

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
int[] num = new int[1];
num[0] = 315; // Ваше число
BitArray ba = new BitArray(num); // ba будет содержать в себе массив флагов
 
// Вывод числа в двоичном представлении
//
for (int i = 0; i < ba.Length; i++)
{
      if (ba[i])
         Console.Write(1);
      else
         Console.Write(0);
}
2
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 2
05.06.2014, 18:01 8
А еще проще сделать так:
C#
1
2
int x = 315;
Convert.ToString(x, 2)
Второй параметр - основание системы счисления, допускаются значения 2, 8, 10, 16
0
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
05.06.2014, 18:06 9
Vavilon4, добро пожаловать на форум!

Проверье, пожалуйста, скорость вашего интернет-подключения, а то между нажатием кнопки "отправить ответ" и появлением его в этой теме прошло чуть больше трех лет.
4
0 / 0 / 0
Регистрация: 05.06.2014
Сообщений: 2
05.06.2014, 21:52 10
Привет, завсегдатай!

И вовсе даже нет, просто эта тема форума вылезает первой при поиске в Гугле, несмотря на свою старость)) А такого ответа в ней не было, вот я и решил дополнить, вдруг кто так же, как и я искать будет))
0
24 / 23 / 6
Регистрация: 18.08.2013
Сообщений: 637
25.09.2014, 13:28 11
Цитата Сообщение от Vavilon4 Посмотреть сообщение
вдруг кто так же, как и я искать будет))
Например, я.
0
valera_21
25.09.2014, 13:58
  #12

Не по теме:

:facepalm:

0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
25.09.2014, 16:40 13
раз уж пошла потеха внесу нормальное решение перевода массива 64 бит в 64-разрядный инт:
C#
1
2
3
4
5
            BitArray bitarray = new BitArray(64);
            bitarray[3] = true;
            byte[] bytearray = new byte[8];
            bitarray.CopyTo(bytearray, 0);
            Console.WriteLine(BitConverter.ToInt64(bytearray,0));
0
1 / 1 / 0
Регистрация: 20.06.2014
Сообщений: 17
15.05.2015, 10:52 14
Цитата Сообщение от Vavilon4 Посмотреть сообщение
А еще проще сделать так:

C#
1
2
int x = 315;
Convert.ToString(x, 2)

Второй параметр - основание системы счисления, допускаются значения 2, 8, 10, 16
Мне тоже этот ответ помог! Спасибо Vavilon4.

Цитата Сообщение от Learx Посмотреть сообщение
раз уж пошла потеха внесу нормальное решение перевода массива 64 бит в 64-разрядный инт:

C#
1
2
3
4
5
 BitArray bitarray = new BitArray(64);
    bitarray[3] = true;
    byte[] bytearray = new byte[8];
    bitarray.CopyTo(bytearray, 0);
    Console.WriteLine(BitConverter.ToInt64(bytearray,0));
Требовалось как раз наоборот: Int64 -> BitArray
0
15.05.2015, 10:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2015, 10:52
Помогаю со студенческими работами здесь

Как получить из двоичного числа символ в ASCII?
Здравствуйте. Имеется строка, заполненная нулями и единицами (т.е. двоичное представление), в...

Как сделать проверку на правильность ввода двоичного числа
перевод из 2 СС в 10 СС,а затем в 8 СС как сделать проверку на правильность ввода двоичного...

Перевод из двоичного числа в десятичное без ведущих нулей
https://www.cyberforum.ru/csharp-beginners/thread445185.html - не работает никак совсем. Прощу...

Вывести все представления натурального числа N суммой натуральных чисел
Вывести все представления натурального числа N суммой натуральных чисел. Перестановка слагаемых...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru