
- •Простые типы данных
- •Модификаторы
- •1. Запись целых констант
- •2. Запись вещественных констант
- •3. Запись символьных констант
- •1. Арифметические операции над данными целочисленных типов
- •Простые типы данных
- •Модификаторы
- •Операция присваивания
- •Простые типы данных
- •Модификаторы
- •Операция присваивания
- •Диапазоны значений простых типов данных для ibm pc
- •5. Структура программы. Функции.
- •2. Формальные параметры функций
- •3. Возвращаемые значения функций
- •2.2 Пример простой программы на языке Си.
- •Управляющие конструкции
- •Ветвления
- •Циклы while, do.. .While и for
- •Теоретичсекий зачет по операторам цикла
- •Графика
- •Указатели
- •Преобразование типов
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Операции над указателями.
- •Структуры
- •Объединения
- •. Описания типов (typedef)
- •Поразрядные операции (bitwize)
Поразрядные операции (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;
}
}