Страница 2 из 3

Добавлено: 22 июн 2006, 13:12
Blood_Magic
0101 shr 1 = 0010
сдвигает биты вправо

есть еще shl

0101 shl 1 = 1010

красным выделены сдвигаемые биты

Добавлено: 22 июн 2006, 13:20
чайничек с крышечкой...
Blood_Magic писал(а): http://www.r0.ru - вот ссылочка
Это издёвка?
я здесь спросила, потому как думала, может или об'яснят "на пальцах" или скажут где об этом ХОРОШО написано (а если и то и другое - совсем замечательно), чтоб не перерывать пол интернета... Вроде как здесь люди должны просто знать где хорошо написано, а где "вода" одна и ссылочку дать труда не составит...

Добавлено: 22 июн 2006, 13:26
чайничек с крышечкой...
Blood_Magic писал(а):0101 shr 1 = 0010
сдвигает биты вправо

есть еще shl

0101 shl 1 = 1010

красным выделены сдвигаемые биты
Это все я поняла уже тогда, когда расшифровали что означает "shr".
Мне был непонятен вот этот кусок:
If i and 1=1 then
Пошла искать где почитать про "битовую операцию"...

Добавлено: 22 июн 2006, 13:47
чайничек с крышечкой...
Вот что нашлось:
Операция && группируется слева направо. Она возвращает 1, если оба ее операнда отличны от нуля, и 0 в противном случае. В отличие от & операция && гарантирует вычисление слева направо; более того, если первый операнд равен 0, то значение второго операнда вообще не вычисляется

Операнды не обязаны быть одинакового типа, но каждый из них должен быть либо одного из основных типов, либо указателем. Результат всегда имеет тип int.
"операнд" - это 'один знак'?
Операция что-ли смотрит спвпадаючие единички?
а какой результат будет если к числу, скажем "1101" применить эту побитовую операцию "и" с числом "0101"?

Добавлено: 22 июн 2006, 14:07
Absurd
"операнд" - это 'один знак'?
Операнд - это параметр у оператора.

Код: Выделить всё

с = a + b
+, = операторы
a и b операнды оператора +
с и a + b операнды оператора =
а какой результат будет если к числу, скажем "1101" применить эту побитовую операцию "и" с числом "0101"?
Получится 0101 (Десятичное 5):

Младший разряд (2^0) 1 and 1 = 1
Второй разряд (2^1) 0 and 0 = 0
Третий разряд (2^2) 1 and 1 = 1
Четвертый разряд (2^3) 1 and 0 = 0

Добавлено: 22 июн 2006, 15:09
чайничек с крышечкой...
Спасибо! Теперь все поняла

Добавлено: 22 июн 2006, 15:13
BBB
чайничек с крышечкой... писал(а):Вот что нашлось:
Операция && группируется слева направо. Она возвращает 1, если оба ее операнда отличны от нуля, и 0 в противном случае. В отличие от & операция && гарантирует вычисление слева направо]
&& и & - это вообще уже синтаксис языка C, а не Pascal/Delphi.
В C:
& - побитовый "И"
&& - логическая операция "И" (логическое умножение)

В C эти две операции обозначаются по-разному, а в Pascal/Delphi - одинаково: AND
А чтобы понять, какая именно из этих двух применена в данном месте, надо смотреть на типы операндов. Если они - целые числа, то это будет "побитовый И", если операнды - логические, то это будет "логический И"

Добавлено: 22 июн 2006, 16:53
Blood_Magic
чайничек с крышечкой... писал(а):а какой результат будет если к числу, скажем "1101" применить эту побитовую операцию "и" с числом "0101"?
попробуй столбиком побитово сложить, как в 1 классе

Код: Выделить всё

1101
0101
----
0101

Добавлено: 22 июн 2006, 16:58
чайничек с крышечкой...
Blood_Magic писал(а):
попробуй столбиком побитово сложить, как в 1 классе
уже все поняла-поняла :lol: выше уже все написали.
Спасибо!

Добавлено: 23 июн 2006, 11:25
Игорь Акопян
вот (яндекс рулит) набрал в нём битовые операции и получил по первой же ссылке
http://tspu.ru/stasandr/bitOper.htm