Вопрос по программированию

Обсуждаем все, что хотим

Модератор: chinaski

Сообщение
Автор
Rockwill
Ветеран
Сообщения: 1040
Зарегистрирован: Сб ноя 18, 2006 8:59 pm

#31 Сообщение Rockwill » Чт окт 08, 2009 9:28 pm

shapeshifter писал(а):
Rockwill писал(а):чет в маткаде ничего не получаеццо.....
а как делать булево равенство(кажется оно так называется "^") с числами в двоичном коде??.....я пишу число в массиве,но он мне сравнивает массив с массивом и выдает один ответ..0 или 1.
Не очень понял, о чем речь. Я в маткаде не силен. Были лабы курсе эдак на первом, но я в упор не помню, что там к чему ) С математикой еще в прошлом семестре копался, так что в ней могу что-нить подсказать, а так - соре.
В любом случае,спасибо огромное)))

Аватара пользователя
Senior Lupasin
Ветеран
Сообщения: 1589
Зарегистрирован: Сб ноя 17, 2007 3:24 pm

#32 Сообщение Senior Lupasin » Чт окт 08, 2009 9:32 pm

Устанавливаешь флаг в единицу.
Сравниваешь число с 2 в 31 степени.
Если больше, записываешь флаг в 31-ю позицию, инвертируешь его и отнимаешь от числа 2 в 31 степени.
Если меньше, записываешь в 31-ю позицию инвертированный флаг, не инвертируешь его и не отнимаешь 2 в 31 степени.

Повторяешь для 30, 29, ..., 1, 0.
vk.com/staygreentailed

Rockwill
Ветеран
Сообщения: 1040
Зарегистрирован: Сб ноя 18, 2006 8:59 pm

#33 Сообщение Rockwill » Чт окт 08, 2009 9:44 pm

Senior Lupasin писал(а):Устанавливаешь флаг в единицу.
Сравниваешь число с 2 в 31 степени.
Если больше, записываешь флаг в 31-ю позицию, инвертируешь его и отнимаешь от числа 2 в 31 степени.
Если меньше, записываешь в 31-ю позицию инвертированный флаг, не инвертируешь его и не отнимаешь 2 в 31 степени.

Повторяешь для 30, 29, ..., 1, 0.
что за флаги?

Аватара пользователя
Senior Lupasin
Ветеран
Сообщения: 1589
Зарегистрирован: Сб ноя 17, 2007 3:24 pm

#34 Сообщение Senior Lupasin » Чт окт 08, 2009 9:46 pm

Переменная, которая может принимать значения 0 и 1.
vk.com/staygreentailed

Rockwill
Ветеран
Сообщения: 1040
Зарегистрирован: Сб ноя 18, 2006 8:59 pm

#35 Сообщение Rockwill » Чт окт 08, 2009 9:48 pm

Senior Lupasin писал(а):Переменная, которая может принимать значения 0 и 1.
окей...
а теперь можно предыдущий пост,только попроще плз))))
Это ты про МатКад?...
Заранее простите за тупость))

Аватара пользователя
shapeshifter
Завсегдатай
Сообщения: 658
Зарегистрирован: Чт янв 10, 2008 5:35 pm
Откуда: mnsk

#36 Сообщение shapeshifter » Чт окт 08, 2009 11:02 pm

Rockwill писал(а):Заранее простите за тупость))
Не ссы, я тоже :censored: не понял.

Аватара пользователя
Senior Lupasin
Ветеран
Сообщения: 1589
Зарегистрирован: Сб ноя 17, 2007 3:24 pm

#37 Сообщение Senior Lupasin » Пт окт 09, 2009 9:34 am

Плохо понимал.

Ладно, паскаль моего детства.

begin
A:=1;
for I:=31 downto 0 do
begin
if N>=DegreesOfTheDvoika then
begin
A:=InverseMatrix [A];
Dec (N, DegreesOfTheDvoika )
end;
S :=InverseMatrix [A]
end
end
Последний раз редактировалось Senior Lupasin Пт окт 09, 2009 11:39 am, всего редактировалось 2 раза.
vk.com/staygreentailed

Аватара пользователя
shapeshifter
Завсегдатай
Сообщения: 658
Зарегистрирован: Чт янв 10, 2008 5:35 pm
Откуда: mnsk

#38 Сообщение shapeshifter » Пт окт 09, 2009 9:48 am

Лупасин, причем тут 2 в 31-й степени?

Аватара пользователя
Senior Lupasin
Ветеран
Сообщения: 1589
Зарегистрирован: Сб ноя 17, 2007 3:24 pm

#39 Сообщение Senior Lupasin » Пт окт 09, 2009 10:11 am

Перевод в двоичную систему.
Был бы в девятеричную, было бы 9 в 31 степени.

Перевод совмещён с переносом в код Грея.
vk.com/staygreentailed

Аватара пользователя
shapeshifter
Завсегдатай
Сообщения: 658
Зарегистрирован: Чт янв 10, 2008 5:35 pm
Откуда: mnsk

#40 Сообщение shapeshifter » Пт окт 09, 2009 11:06 am

Проиллюстрируй на каком-нибудь примере.

Аватара пользователя
Senior Lupasin
Ветеран
Сообщения: 1589
Зарегистрирован: Сб ноя 17, 2007 3:24 pm

#41 Сообщение Senior Lupasin » Пт окт 09, 2009 11:39 am

Переводим 1000 в двоичную систему (пока простую, не код Грея).

1000>512
B=10.0000.0000
1000:=1000-512=488

488>256
B=11.0000.0000
488:=488-256=232

232>128
B=11.1000.0000
232:=232-128=104

104>64
B=11.1100.0000
104:=104-64=40

40>32
B=11.1110.0000
40:=40-32=8

8<16
B=11.1110.0000
NOP

8>=8
B=11.1110.1000
8:=8-8=0

0<4
0<2
0<1

B=11.1110.1000
vk.com/staygreentailed

Аватара пользователя
Senior Lupasin
Ветеран
Сообщения: 1589
Зарегистрирован: Сб ноя 17, 2007 3:24 pm

#42 Сообщение Senior Lupasin » Пт окт 09, 2009 11:40 am

А если переводим в код Грея, то, получив единицу, просто лишний раз инвертируем результат.
vk.com/staygreentailed

Аватара пользователя
shapeshifter
Завсегдатай
Сообщения: 658
Зарегистрирован: Чт янв 10, 2008 5:35 pm
Откуда: mnsk

#43 Сообщение shapeshifter » Пт окт 09, 2009 12:29 pm

И где здесь 2 в 31-й степени? И вообще, почему именно в 31-й?

Аватара пользователя
Senior Lupasin
Ветеран
Сообщения: 1589
Зарегистрирован: Сб ноя 17, 2007 3:24 pm

#44 Сообщение Senior Lupasin » Пт окт 09, 2009 5:33 pm

Для тридцати двух бит нужно два в тридцать первой,
а для тысячи, которая в примере, хватит пятисот двенадцати.
vk.com/staygreentailed

Аватара пользователя
shapeshifter
Завсегдатай
Сообщения: 658
Зарегистрирован: Чт янв 10, 2008 5:35 pm
Откуда: mnsk

#45 Сообщение shapeshifter » Пт окт 09, 2009 5:54 pm

Забавно ты придумал. А если число больше 2^32?

Ответить