Выделить крайний справа нулевой бит

Тема в разделе "WASM.BEGINNERS", создана пользователем Nat111, 31 май 2010.

  1. Nat111

    Nat111 New Member

    Публикаций:
    0
    Регистрация:
    31 май 2010
    Сообщения:
    2
    Добрый вечер! Так как я никогда не работала со средой 4th, прошу помочь мне подсказав с чего начать написания кода для задания: ВЫДЕЛИТЬ КРАЙНИЙ СПРАВА НУЛЕВОЙ БИТ.

    Разбираюсь уже двое суток и никак не дойдет до меня с чего начать написания данного кода...помогите пожалуйста. Буду очень признательна!
     
  2. slavanap

    slavanap Вячеслав

    Публикаций:
    0
    Регистрация:
    10 сен 2008
    Сообщения:
    300
    Адрес:
    Смоленск, Россия
    Можно поподробнее, что за среда?
     
  3. Nat111

    Nat111 New Member

    Публикаций:
    0
    Регистрация:
    31 май 2010
    Сообщения:
    2
    Среда программирования FORTH (как я поняла это типа ассемблера). Вот в ней нужно выполнить (написать код) программы ВЫДЕЛИТЬ КРАЙНИЙ СПРАВА НУЛЕВОЙ БИТ. Тема битовые операции.
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Nat111
    Есть ведь специально отведённый топик про лабораторные работы, ну или как вы эти задачи называете..
    Чтобы выделить бит, нужно знать откуда его выделять и куда. мб просто маску наложите, типо &1(http://ru.wikipedia.org/wiki/Конъюнкция).
     
  5. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    Можно погуглить bithacks. А вообще N+1 — это N у которого проинвертирован самый младший нулевой бит и всё, что правее него. DUP DUP 1+ OR XOR — это если ничего не путаю. Для -1, естественно, не сработает.
     
  6. slavanap

    slavanap Вячеслав

    Публикаций:
    0
    Регистрация:
    10 сен 2008
    Сообщения:
    300
    Адрес:
    Смоленск, Россия
    Nat111
    Если это оно http://ru.wikipedia.org/wiki/Forth
    то 1. извините, про эту среду мне ничего не известно,
    2. это не ассемблер
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.890
    Nat111
    ВЫДЕЛИТЬ КРАЙНИЙ СПРАВА НУЛЕВОЙ БИТ
    X = 01011100011
    X+1 = 01011100100
    not X = 10100011100
    (not X) and (X+1) = 00000000100
     
  8. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.890
    Nat111
    А если вспомнить закон де Моргана, то получим те же яйца, но вид сбоку: not(X or not(X+1))
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.890
    "Остапа несло..." ©
    (not X) and (-(not X))