Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: [C++] Запись числа в массив побитово  (Прочитано 9165 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ваалама
Гость
« : 03-06-2009 20:55 » 

Не могу решить проблему, с чем и обращаюсь к вам за помощью. (Работаю в билдере)
 
нужно сделать программу, в которой я не могу реализовать такое действие:
цикл от 0 до 32767 в котором номер шага цикла заносится в одномерный массив таким образом - в ячейку Y[0] заносится номер шага цикла в десятичной системе, а в Y[1]-Y[15] 15 разрядов этого числа в двоичной системе.
 
Искал в инете, нашел кое что похожее попробовал изменить под себя но что то не вышло (не получается именно с двоичным числом) .Вот этот код

Код:
Код:
 for(int i=0;i<32768;i++){ 
        Y[0]=i;
       l=0;
      for(int j=0xf;j;j>>=1){Y[(l++)+1]=(i&(j<<15))?1:0;}
 }
 
Помогите пожалуйста!!!!
« Последнее редактирование: 04-06-2009 05:44 от Вад » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 03-06-2009 22:02 » 

аааа это что?

Просто опиши словами по-русски, что в этих строчках происходит, не произносить а ля "эл равно нулю", а физически  объяснить что есть что:

l=0;
j>>=1
Y[(l++)+1]
(i&(j<<15))

А потом весь алгоритм словами, как ты это себе представляешь (пусть даже и ошибочно) так легче будет разбираться, в чём у тебя проблема. На мой взгляд задача тривиальная, если учесть конечно, что имеются ввиду 15 младших разрядов.

Наводящий вопрос. В первой части задания требуется: "в ячейку Y[0] заносится номер шага цикла в десятичной системе"
Выполни сначала это задание. У тебя получается вот такой код:

for(int i=0;i<32768;i++)
{
     Y[0]=i;
}

Правильно он будет работать? Что будет находится в Y[0] после того как цикл отработает? Да будет ли цикл, если компилятор не дурак?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
zubr
Гость
« Ответ #2 : 04-06-2009 03:33 » 

Код:
for(int i = 0; i < 32768; i++)
{
    if(i > 0 && i < 16)
   Y[i] = i & 0x7FFF;
   else
   Y[i] = i;
}
« Последнее редактирование: 04-06-2009 03:37 от zubr » Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 04-06-2009 09:16 » new

Я думаю, что это не то. Массив данных определён как Y[16] и результат должен выглядеть примерно так:

Y[0] = 0
Y[1] = 0
...
Y[15] = 0

...

Y[0] = 32767
Y[1] = 1
...
Y[15] = 1
« Последнее редактирование: 04-06-2009 09:18 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #4 : 05-06-2009 05:26 » 

Код:
unsigned short number = 15234;
unsigned short nums[16] = {0};
nums[0] = number;
for (int i = 0; i != 14; ++i)
   nums[ i + 1 ] = ((1 << i) & number)  == 0 ? 0 : 1;

Думаю одним циклом с наружи сами обернёте.
Записан

Странно всё это....
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines