Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разложения числа на степени двойки, .net 
V
    Опции темы
LectorSP
Дата 28.7.2008, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 13.4.2006
Где: г. Минск

Репутация: нет
Всего: 2



Такой вопрос....   есть число которое являеться суммой возведения двойки в разные степени...допустим  2^0 + 2^1 + 2^3 = 11.  Может быть есть какие нибуть встроенный классы, методы, с помощью которых можно быстро получить степени двоек, которые суммировались для получения известного чилса....или придеться писать свою функцию...сначала перевисти данное число  в двоичную систему 11 = 1011 , а потом уже по этому числу  смотреть какие степени не умножаються на 0.  11 = 1011 = 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0. Получаются степени двойки 3.1.0 .... и если да, то как из одной системы перевести в другую изпользуя может быть какие нибуть встроенные функции в .net ...или предеться делить и смотреть остаток....

Надеюсь понятно чего я хочу : )) кто знает, подскажите пожалуйсти или укажите где искать : )) заранее спасибо.!
--------------------
Трудно жить на свете негритенку Пете, Бьет его по роже  пионер Сережа! Никакими расовыми этническими и религиозными предрассудками я не страдаю!Я за DOT.NET......................ну и за мир во всем мире тоже!
PM MAIL ICQ   Вверх
HalkaR
Дата 28.7.2008, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: 14
Всего: 42



http://forum.vingrad.ru/forum/topic-216722.html

А вообще Convert.ToInt32 и Convert.ToString
PM MAIL   Вверх
Akina
Дата 28.7.2008, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



То есть тебе нужна функция быстрого перевода в двоичную систему, что ли? А в какой форме тебе нужно получать результат (видимо, не строка)? И главное - для чего? где ПОТОМ и с какой целью будет использоваться результат?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
vretsky
Дата 28.7.2008, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 29.10.2007

Репутация: нет
Всего: нет



про встоенные классы не знаю (да я пологаю не очень и нужны), но можно использовать побитовое "И" 
так например 

int a=2;
int b=7;

int c=a & b;
// c примет значение 2
// т.к.  7=2^0+2^1+2^2=1+2+4

int a=4;
int b=7;

int c=a & b;
// c примет значение 4
// т.к.  7=2^0+2^1+2^2=1+2+4

int a=2;
int b=8;

int c=a & b;
// c примет значение 0


т.е. если (A^N & B==A^N) вернуть N 
иначе вернуть 0

типа того....
код реализации думаю сами напишете


PM MAIL   Вверх
LectorSP
Дата 28.7.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 13.4.2006
Где: г. Минск

Репутация: нет
Всего: 2



Мне не нужно число в двоичной системе , мне нужны Степени(0.1.2.3.4.5.6.7.8...) в которых находяться двойки при сложении для получения числа....зная только резултирующее число  т.е число 11 это сумма двоек в каких степенях...это можно сделать но тогда придеться переводить данное число в двоичную систему, потом делать так - 
1 = 1011 = 1*2^3 + 0*2^2 + 1*2^1 + 1*2^0. => следовательно искомые степени (3, 1. 0) - то, что мне нужно : ))) 
--------------------
Трудно жить на свете негритенку Пете, Бьет его по роже  пионер Сережа! Никакими расовыми этническими и религиозными предрассудками я не страдаю!Я за DOT.NET......................ну и за мир во всем мире тоже!
PM MAIL ICQ   Вверх
Ctrl
Дата 28.7.2008, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 12.2.2008
Где: Tula

Репутация: 6
Всего: 7



Вот пример, делающий то что надо (разложения числа на степени двойки)
Код

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication3 {
    class Program {
        static void Main(string[] args) {
            int sourceValue = 11;
            Console.Write("{0} = [{1}]", sourceValue, Convert.ToString(sourceValue, 2));
            List<int> powers = new List<int>(GetPowersOf2(sourceValue));
            for(int p = 0; p < powers.Count; p++) {
                Console.Write((powers[p] > 0) ? " + 2^{0}" : "", p);
            }
        }
        static IEnumerable<int> GetPowersOf2(int value) {
            int v = value;
            while(v > 0) {
                yield return (v & 0x01);
                v >>= 1;
            }
        }
    }
}

PM MAIL ICQ   Вверх
LectorSP
Дата 29.7.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 13.4.2006
Где: г. Минск

Репутация: нет
Всего: 2



Спасибо огромное, то что нужно...очень интересно : ))
--------------------
Трудно жить на свете негритенку Пете, Бьет его по роже  пионер Сережа! Никакими расовыми этническими и религиозными предрассудками я не страдаю!Я за DOT.NET......................ну и за мир во всем мире тоже!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.2064 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.