Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2015, 15:49   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Как переписать некоторые функции с MATLAB на C#

Код:
buf = xor(x(10),x(7));
   x = circshift(x,[0 1]);
Всего две строчки MATLAB. Но это означает исключающее ИЛИ и циклический сдвиг. А как эти строчки быстрее и проще всего написать на C#?
Krasi вне форума Ответить с цитированием
Старый 27.10.2015, 16:22   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

xor — ^ https://msdn.microsoft.com/en-us/library/zkacc7k1.aspx
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.10.2015, 16:27   #3
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Это понял. А вот циклический сдвиг - ? Вроде, много где написано, например здесь http://stackoverflow.com/questions/1...-array-of-byte

Но я сделал и так, а у меня после цикла все х = 0, хотя до этого byte[] x = {0, 1, 1, 1, 1, 1, 1, 1, 1, 1}; По хорошему, я ожидаю увидеть {1(перешла справа), 0, 1, 1, 1, 1, 1, 1, 1, 1 (здесь одна цифра ушла влево)}

Наверное, я немного туплю, потому что делаю так:
Код:
for (int i = 0; i <= 9; i++)
            {
                x[i] = (byte)(x[i] >> 1);
            }
Что не так?

Последний раз редактировалось Krasi; 27.10.2015 в 16:30.
Krasi вне форума Ответить с цитированием
Старый 27.10.2015, 16:30   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

что в x и что должно получиться после этой строки?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 27.10.2015, 19:12   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,760
По умолчанию

Цитата:
Что не так?
Ну вы бит вытолкнули, а кто его в начало загонять будет? И, конечно же, все будут 0 - вы их же заталкиваете...
p51x вне форума Ответить с цитированием
Старый 27.10.2015, 22:23   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,331
По умолчанию

Вот один из примеров из сети: http://blog.kislenko.net/show.php?id=1076
Код:
unsigned int right_shift (unsigned int n,unsigned int k) {
 unsigned int i, bit;
 for (i=0; i<k; i++) {
  bit=n&0x0001; // сохраняем значение правого, выдвигаемого бита
  n>>=1;        // выполняем один сдвиг
  n|=bit<<15;   // вставляем выдвинутый правый бит слева
 }
 return n;
}
Тут предполагается, что циклический сдвиг выполняется для 16-битового числа: n - сдвигаемое число, k - число сдвигов.


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переписать метод МГУА из Matlab в C# iKarma Фриланс 1 31.05.2013 15:29
Почему отсутствуют некоторые функции Access DronLee Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 0 09.10.2012 15:12
Переписать с MatLab на C++ Builder drew47qq C++ Builder 0 01.01.2012 18:34
как заменить некоторые операторы на процедуры и функции в паскале.Очень нужно! Анастасия1902 Помощь студентам 2 23.02.2010 17:18