|
|
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Помогите новичку в программировании... Установить в единицу самый правый нулевой бит в произвольном целом числе, не используя циклов и рекурсии? Например, 101011->101111 или 0111->1111. var A: integer; begin write ('Vvedite A: '); readln (A); A := A OR (A+1); writeLn ('New A = ', A); end. Правильно ли решение?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2009, 21:45:23 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Dmitry55Помогите новичку в программировании... Установить в единицу самый правый нулевой бит в произвольном целом числе, не используя циклов и рекурсии? Например, 101011->101111 или 0111->1111. var A: integer; begin write ('Vvedite A: '); readln (A); A := A OR (A+1); writeLn ('New A = ', A); end. Правильно ли решение?? Если вопрос только в правильности, то нет. 01100 + 1 = 01101 or 01100 = 01101 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2009, 21:55:55 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Но в вашем примере самый правый нулевой бит установился в единицу !!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2009, 21:59:30 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Dmitry55Но в вашем примере самый правый нулевой бит установился в единицу !!? Ой...извеняюсь...бегло читал задание подумал чёто- про самый левый) ну тогда такой вариант 01101 + 1 = 01110 or 01101 = 01111 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2009, 22:10:25 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Вобще решение очень просто...но т.к. вы не спрашивали его, а только проверить то собсна и писать не буду...малоли сами хотите к нему придти) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2009, 22:15:04 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Тву...я как алкаш))) самый правый НУЛЕВОЙ бит) тогда правильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2009, 22:27:30 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
прибавить единицу, только и всего ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 02:02:45 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Яростный Мечприбавить единицу, только и всего Or необходим...подумайте сами почему! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 02:05:26 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Demon9151Яростный Мечприбавить единицу, только и всего Or необходим...подумайте сами почему!В формулировке задачи не сказано , что остальные биты обязательно должны остаться без изменение. Главное, чтоб искомый бит стал единицей. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 02:09:47 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Яростный МечDemon9151Яростный Мечприбавить единицу, только и всего Or необходим...подумайте сами почему!В формулировке задачи не сказано , что остальные биты обязательно должны остаться без изменение. Главное, чтоб искомый бит стал единицей. :) В поставленной задаче действительно не сказано...но всёже or избавит от щепетильных моментов при условии если все биты заняты единицами . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 02:12:12 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Demon9151В поставленной задаче действительно не сказано...но всёже or избавит от щепетильных моментов при условии если все биты заняты единицами .Это да. Просто я где-то раньше видел такую задачку, и там вроде говорилось о желательности самого простого варианта при данной формулировке... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 02:14:49 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Если нужно в 1 установить самый правый бит, то битовое отрицание источника not. Это если неважное содержимое самого источника. Если нужно по условию обеспечить сохранность остальных двоич. разрядов, то банально проход по всем битам числа начиная справа без цикла, но с количествоим if then равным числу битов, т.е. банальное раскрытие цикла, только при условии, что искомое число ограничено размером регистра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 16:04:13 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
студентикЕсли нужно в 1 установить самый правый бит, то битовое отрицание источника not. Это если неважное содержимое самого источника. Если нужно по условию обеспечить сохранность остальных двоич. разрядов, то банально проход по всем битам числа начиная справа без цикла, но с количествоим if then равным числу битов, т.е. банальное раскрытие цикла, только при условии, что искомое число ограничено размером регистра. Это шутка такая?) или вы как я посчитали правый за левый...речь идёт про самый нижний нулевой бит...а не самый верхний...и предложенная вами реализация не очень скажем красива) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 17:04:05 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 17:47:57 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
dgggfhgfjh, это самый правый бит а не самый правый нулевой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 19:35:24 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Demon9151студентикЕсли нужно в 1 установить самый правый бит, то битовое отрицание источника not. Это если неважное содержимое самого источника. Если нужно по условию обеспечить сохранность остальных двоич. разрядов, то банально проход по всем битам числа начиная справа без цикла, но с количествоим if then равным числу битов, т.е. банальное раскрытие цикла, только при условии, что искомое число ограничено размером регистра. Это шутка такая?) или вы как я посчитали правый за левый...речь идёт про самый нижний нулевой бит...а не самый верхний...и предложенная вами реализация не очень скажем красива) Отнюдь это не шутка, это моя ошибка:) Значит ответ уже дан в начале топика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 21:13:45 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
студентикDemon9151студентикЕсли нужно в 1 установить самый правый бит, то битовое отрицание источника not. Это если неважное содержимое самого источника. Если нужно по условию обеспечить сохранность остальных двоич. разрядов, то банально проход по всем битам числа начиная справа без цикла, но с количествоим if then равным числу битов, т.е. банальное раскрытие цикла, только при условии, что искомое число ограничено размером регистра. Это шутка такая?) или вы как я посчитали правый за левый...речь идёт про самый нижний нулевой бит...а не самый верхний...и предложенная вами реализация не очень скажем красива) Отнюдь это не шутка, это моя ошибка:) Значит ответ уже дан в начале топика. Ясн...ну я сначала тоже прочитал и по невнимательности или мнимой очевидности подумал что нужно самый верхний(левый) бит установить в единицу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2009, 23:08:27 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
MesserShmitстудентикDemon9151студентикЕсли нужно в 1 установить самый правый бит, то битовое отрицание источника not. Это если неважное содержимое самого источника. Если нужно по условию обеспечить сохранность остальных двоич. разрядов, то банально проход по всем битам числа начиная справа без цикла, но с количествоим if then равным числу битов, т.е. банальное раскрытие цикла, только при условии, что искомое число ограничено размером регистра. Это шутка такая?) или вы как я посчитали правый за левый...речь идёт про самый нижний нулевой бит...а не самый верхний...и предложенная вами реализация не очень скажем красива) Отнюдь это не шутка, это моя ошибка:) Значит ответ уже дан в начале топика. Ясн...ну я сначала тоже прочитал и по невнимательности или мнимой очевидности подумал что нужно самый верхний(левый) бит установить в единицу) А левый бит был был интереснее...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2009, 00:16:31 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
студентикMesserShmitстудентикDemon9151студентикЕсли нужно в 1 установить самый правый бит, то битовое отрицание источника not. Это если неважное содержимое самого источника. Если нужно по условию обеспечить сохранность остальных двоич. разрядов, то банально проход по всем битам числа начиная справа без цикла, но с количествоим if then равным числу битов, т.е. банальное раскрытие цикла, только при условии, что искомое число ограничено размером регистра. Это шутка такая?) или вы как я посчитали правый за левый...речь идёт про самый нижний нулевой бит...а не самый верхний...и предложенная вами реализация не очень скажем красива) Отнюдь это не шутка, это моя ошибка:) Значит ответ уже дан в начале топика. Ясн...ну я сначала тоже прочитал и по невнимательности или мнимой очевидности подумал что нужно самый верхний(левый) бит установить в единицу) А левый бит был был интереснее...) Полностью согласен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2009, 00:33:10 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
Demon9151, Если не трудно, напишите решение. Конечно, для случая, когда все остальные биты должны остаться неизменными. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2009, 12:03:34 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
x = x << 1 | 1 оно же x = x RCL 1 OR 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2009, 19:41:25 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
x = x | (x+1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2009, 20:27:15 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
x = (x >> 1) << 1 + 1 (для положительных, для отрицательных подумать надо) или x = ( x >> 1) << 1 | 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 10:39:32 |
|
||
|
Логическая задачка...
|
|||
|---|---|---|---|
|
#18+
А вообще, конечно же неверное решение вначале приводит автор, поскольку будут изменяться другие биты, короме установки последнего. Если сказано установить какой-то бит - это автоматически подразумевает оставлять все другие без изменения, в противном случае может быть засчитано решение А := 1, что абсурдно. Можно так: A := (A div 2) * 2 + 1; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2009, 10:53:46 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36205205&tid=1344243]: |
0ms |
get settings: |
5ms |
get forum list: |
18ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
16ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 360ms |

| 0 / 0 |
