powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / BINARY
10 сообщений из 10, страница 1 из 1
BINARY
    #32549495
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Yest cislo dvoichnom vide.Nado kakoy to sluchayniy vzyatiy bit menyat na protivopolojnoqo.Napirmer:
11011 budet 11111 (slucayniy bit 3-y)
ili
01010 budet 00010 (slucayniy bit 2-y)
Kak eto delat?
Ya delal eto , no dumayu chto yest bolee korotkiy put ili kakaya to konkretnaya funksiya.
...
Рейтинг: 0 / 0
BINARY
    #32549559
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор* исходное двойное слово
lnDoubleWord = 0x1
* выберем случайный бит от 0 до 31
lnBit = int(rand()*31)
*
* обратим бит воспользовавшишь функцией исключающего или:
* 1 xor 1 = 0
* 0 xor 1 = 1
*
lnResult = bitxor(m.lnDoubleWord, bitlshift(1, m.lnBit))
...
Рейтинг: 0 / 0
BINARY
    #32549563
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Oshibka: Fayl "bitlshift.prg' ne seshestvuet.
Umenya foxpro2.5 mojet bit po etomu?
...
Рейтинг: 0 / 0
BINARY
    #32549564
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А bittest, bitset, bitclear есть?
...
Рейтинг: 0 / 0
BINARY
    #32549567
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
NET NI 1 IZ NIX NETU . MOJET BIT YA BUDU POMENYAT FOXPRO. A S POMOSHI ETI FUNKSII TOJE MOJNA , ESLI DA ,SKAJITE POJALUSTA!
...
Рейтинг: 0 / 0
BINARY
    #32549573
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так:

Код: plaintext
lnResult = iif(bittest(m.tnDoubleWord, m.lnBit), bitclear(m.tnDoubleWord, m.lnBit), bitset(m.tnDoubleWord, m.lnBit))

Но еще я подумал, что bitlshift можно заменить на

Код: plaintext
( 2  ^ m.lnBit)

Так что, можно и первым способом:

Код: plaintext
lnResult = bitxor(m.lnDoubleWord,  2  ^ m.lnBit)

Удачи.
...
Рейтинг: 0 / 0
BINARY
    #32549583
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Spasibo, seycas pobrobuyu
...
Рейтинг: 0 / 0
BINARY
    #32550122
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
Net eto ne to chto mne nujno, ili ya chto-to ne tak ponimayu.
Mne nado ctobi ,

yesli :

lnDoubleWord = "11111"
lnBit=1 (1-y bit doljen menyatsa na "0")
toqda, novoe chislo ="01111"

polucaetsya="11109".

yesli :
lnDoubleWord = "10101"
lnBit=4 (4-y bit doljen menyatsa na "1")
toqda, novoe chislo ="10111"

polucaetsya="10085".
...
Рейтинг: 0 / 0
BINARY
    #32550253
TF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
TF
Гость
???!!!
...
Рейтинг: 0 / 0
BINARY
    #32550361
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понимаю, какие проблемы?

У тебя есть символьная строка, например:

lcBinary = '101010'

Тебе надо выбрать произвольную позицию в этой строке:

=RAND(-1) && это обеспечивает реальную "случайность"
lnPos = INT(RAND()*LEN(m.lcBinary))

Теперь находишь, что именно записано в этой позиции и меняешь значение на противоположное:

lcChar = SubStr(m.lcBinary,m.lnPos,1)
IF m.lcChar='0'
m.lcChar='1'
ELSE
m.lcChar='0'
ENDIF

Записываю измененное значение вместо ранее существовавшего

lcBinary = STUFF(m.lcBinary,m.lnPos,1,m.lcChar)

Смотрим, что получилось

?m.lcBinary
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / BINARY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]