![]() |
![]() |
![]() |
|
OR, AND, NOT, XOR | ☑ | ||
---|---|---|---|---|
0
о_о
21.10.04
✎
09:02
|
OR, AND, NOT, XOR есть ли в 1С ? А то как-то всю ЖККу просмотрел - не увидел. И в помошнике синтаксическом нет ничего. 1с - 7.7
|
|||
1
Фокусник
21.10.04
✎
09:04
|
ИЛИ, И, НЕ устроят ?
|
|||
2
о_о
21.10.04
✎
09:06
|
Забыл указать что интересуют битовые операции. А попутно сдвиги циклические еще нужно.
|
|||
3
Rovan
гуру
21.10.04
✎
09:11
|
Нафига в 1С битовые операции ? (нет их там да и не было никогда)
|
|||
4
о_о
21.10.04
✎
09:13
|
Ну отрицательный результат - тоже результат.
|
|||
5
427
21.10.04
✎
09:20
|
круто...
|
|||
6
ВторНик
21.10.04
✎
09:31
|
2(5)Вместо "КРУТО" могу предложить другое слово
|
|||
7
Антон ORIGINAL
21.10.04
✎
09:52
|
Зато в программе 1С есть команда "Если".
Я предлагаю программистам фирмы 1С доплнить эту каманду довеском "бы". Тогда можно будет строить конструкции Если бы "$" - Тогда "Канары" - Иначе "# |
|||
8
Оборотень
21.10.04
✎
10:11
|
Нда ... получается только ручками писать :(
|
|||
9
Rovan
гуру
21.10.04
✎
10:17
|
Мои любимые функции в 1С
РассчитатьРегистрыНА ВывестиПредупреждениеНА (Сообщить или Предупреждение) |
|||
10
о_о
23.10.04
✎
21:11
|
Вот если кому интересно.
var pow2[33]; var pow8[12]; var pow16[9]; var convertString; procedure make_pow() pow2[1]=1; pow8[1]=1; pow16[1]=1; for i=1 to 32 do pow2[i+1]=2*pow2[i]; enddo; for i=1 to 11 do pow8[i+1]=8*pow8[i]; enddo; for i=1 to 8 do pow16[i+1]=16*pow16[i]; enddo; endprocedure function bnot(х) return pow2[33]-1-х; endfunction function shl(x) return x*2; endfunction function shlc(x) return (x%pow2[32])*2+int(x/pow2[32]); endfunction function shrc(x) return int(x/2)+(x%2)*pow2[32]; endfunction function shr(x) return int(x/2); endfunction function pow(i,source) if source = 2 then return pow2[i]; elsif source = 8 then return pow8[i]; elsif source = 16 then return pow16[i]; endif; endfunction function convertTo10(x,source) var y,_x; if source=10 then return x; endif; y=0; if source=2 then _x=right("00000000000000000000000000000000"+UPPER(x),32); _to = 32; elsif source=8 then _x=right("00000000000000"+UPPER(x),11); _to = 11; elsif source=16 then _x=right("00000000"+UPPER(x),8); _to = 8; endif; y=0; for i=0 to _to-1 do y=y+pow(i+1,source)*number(find(convertString,mid(_x,_to-i,1))-1); enddo; return y; endfunction function convertFrom10(x,dest) var _to,del; _to = 32/?(dest = 2,1,?(dest=8,3,4)); del = x; _y=""; y=""; for i=1 to _to do _y=_y+mid(convertString,(del % dest)+1,1); del = int (del/dest); enddo; for i=0 to _to-1 do y=y+mid(_y,_to-i,1); enddo; return y; endfunction function convertNumber(x,source,dest) return convertFrom10(convertTo10(x,source),dest); endfunction function getBit(x,N) return (int(x/pow2[N])%2); endfunction function bor(x,y) var z; z = 0; for i = 1 to 32 do z=z+pow2[i]*(?(getBit(x,i)+getBit(y,i)<1,0,1)); enddo; return z; endfunction function band(x,y) var z; z = 0; for i = 1 to 32 do z=z+pow2[i]*getBit(x,i)*getBit(y,i); enddo; return z; endfunction function bxor(x,y) return bor(band(bnot(x),y),band(x,bnot(y))); endfunction перед началом работы проинициализировать массивы pow. Исходим из предположения что работаем с 32 битами. Иначе надо менять вхождения 32 и порожденых границ для расчета MD5 не тянет. Но по при не очень активном использовании терпимо |
|||
11
о_о
23.10.04
✎
21:12
|
Забыл указать -
convertString = "0123456789ABCDEF"; |
|||
12
Кортес
23.10.04
✎
21:39
|
Программирование ради программирования?
|
|||
13
о_о
23.10.04
✎
21:58
|
Да нет. Есть вполне реальное применение при нахождении общего наименьшего предшественника для N строк.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |