Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КУРС Программирование на Си.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
606.21 Кб
Скачать

Поразрядные операции (bitwize)

Для разработки операционных систем или программного обеспечения для тестирования или работы в сети, необходимо непосредственное взаимодействие с аппаратными средствами компьютеров. Все данные реализуются во внутреннем машинном представлении как последовательности битов. (0 или 1). Поразрядные операции используются обычно для манипуляций с битами целочисленных операндов (char, Short, Int, long), но обычно применяются к целым без знака (unsigned) Поразрядные операции являются машинно-зависимыми.

Поразрядные операции:

Поразрядное И (&-), поразрядное ИЛИ (|) , поразрядное исключающее или (^), сдвиг влево (<<), сдвиг вправо (>>), поразрядное НЕ (~).

Операции поразрядное И Или и исключающее ИЛИ выполняют поразрядное сранвение двух своих операндов. В результате проведения операции

Поразрядное И- бит станавливается в 1, если соответствующий бит в обоих операндах равен 1

Поразрядное ИЛИ- бит устанавливается в 1, если хотя бы в одном из операндов он равен 1

Поразрядное Исключающее ИЛИ- бит уст. В 1, если соответствующий бит равен 1 в одном и только одном операнде.

Операции сдвигавлево сдвигает биты своего левого операнда влево на количество битов, заданное правым операндом.

Операция поразрядное НЕ устанавливает в своем операнде все биты со значениями 0 в 1, а 1 в 0.

#include <stdio.h>

#include <stdlib.h>

main()

{int n,m, dn;

char s1[20],s2[20], s3[20];

//scanf("%d%d", &n,&m);

for (dn=1;dn<15;dn++)

{for(m=1;m<15;m++)

{itoa(dn,s2,2);

itoa(m,s3,2);

n=dn;

n^=m;

itoa(n,s1,2);

printf("n=%d: %s m=%d:%s рез=%s\n", dn,s2,m,s3,s1);

}}

}

#include <stdio.h>

#include <stdlib.h>

main()

{int n,m, dn;

FILE *f;

char s1[20],s2[20], s3[20];

//scanf("%d%d", &n,&m);

f=fopen("vasya4", "wt");

fprintf(f,"сдвиг влево\n");

for (dn=1;dn<15;dn++)

{for(m=1;m<15;m++)

{itoa(dn,s2,2);

itoa(m,s3,2);

n=dn;

n<<m;

itoa(n,s1,2);

fprintf(f,"n=%d: %s m=%d:%s рез=%s\n", dn,s2,m,s3,s1);

}}

}

#include <stdio.h>

#include <stdlib.h>

main()

{int n,i;

char s1[20];

scanf("%d", &n);

i=1;

while (i<=256)

{n^=i;

itoa(n,s1,2);

printf("%d %s\n", i,s1);

i<<=1;

}

}