русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Поразрядные (побитовые) операции


Дата добавления: 2013-12-23; просмотров: 973; Нарушение авторских прав


Ввод данных в языке СИ

 

Основные функции, осуществляющие ввод данных представлены в табл.2.5.

Таблица 2.5

Функции ввода

Имя Функции Описание Файл, содержащий прототип
Scanf() Gets() Getchar() Cscanf() Cgets() Getch()   Выполняет форматный ввод из потока stdin Получает строку символов из потока stdin Вводит символ из потока stdin Выполняет форматный ввод с клавиатуры Считывает строку символов с клавиатуры Вводит символ с клавиатуры без эхо-печати stdio.h stdio.h stdio.h conio.h conio.h conio.h

 

Рассмотрим краткое описание этих функций.

Функции scanf() и cscanf() используются для интерактивного ввода. Обобщенная форма записи этих функций следующая:

 

(с)scanf (“строка форматов'', адрес, алрес,…);

В строке форматов применяются те же спецификаторы, которые были рассмотрены ранее для функции printf(): %d, %f, %c, %s (табл.2.4).

В отличие от функций printf() функция (с)scanf() требует указания в списке ввода не данных, а их адресов.

Пример:

/* ввод двух целых чисел в ячейки памяти ''а'' и ''b''*/

(с)scanf (“%d %d”, &a, &b);

где &a &b- адреса операндов ''a'' и ''b''.

Пример:

/* ввод строки символов, представленных массивом */

#include <conio.h>

void main (void)

{

clrscr ( );

char im [10];

cprintf (“Введите имя:” );

cscanf (”%s”, im) ;

cprintf (”\n\r Ваше имя : %s \n\r”, im);

}

Вспомним, что имя массива указывает на его первый элемент, поэтому перед im не ставится символ &.

Входной поток разбивается на отдельные поля с помощью специальных знаков: пробелов, символов табуляции.

Внимание: Для ввода строки, содержащей пробелы, функцию (с)scanf () не используют. Для этой цели предназначена функция (с)gets().



Функции gets() и cgets() читают строку символов, оканчивающуюся символом перевода строки. Символ перевода строки заменяется на символ -терминатор ’\0’.

Пример:

# include <stdio.h>

#include <conio.h>

void main (void)

{

clrscr ();

char string [40];

printf (”Введите строку : ”);

gets (string);

printf (”Строка = %s \n”, string);

getch ( );

}

Функции getchar() и getch(). Функция getchar() предназначена для ввода одиночного символа. Возвращает считанный символ, преобразованный в целое число. Так как буфер stdin имеет размер в одну строку, то функция ничего не возвращает, пока не нажата клавиша ”Enter”.

Пример:

# include <stdio.h>

int main (void)

{

char c;

while ((c=getchar())!=’\n’)

printf (”%c”, c);

return 0;

}

 

Их можно производить с любыми целыми числами, переменными и константами. Их нельзя использовать с переменными типа float, double, long double.Поразрядными операциями являются:

& AND (и),

| OR (или),

^ XOR,

~ NOT (не),

<< сдвиг влево,

>> сдвиг вправо.

Операции AND, OR, NOT, XOR полностью соответствуют аналогичным логическим операциям. Поразрядные операции позволяют, в частности, обеспечить доступ к любому биту информации. Часто эти операции используют в драйверах устройств, программах, связанных с принтером, модемом и другими устройствами.

При выполнении поразрядной операции над двумя переменными, например типа char, операция производится над каждой парой соответствующих разрядов. Отличие поразрядных операций от логических и операций отношения состоит в том, что логическая операция и операция отношения всегда дают в результате 0 или 1. Для поразрядных операций это не так.

Приведем следующий пример:

Если надо установить значение старшего разряда переменной типа char равным нулю, то удобно применить операцию &(and).

ch = ch & 127;

Пусть ch = ’A’

‘A’ в двоичном коде: 11000001;

127 в двоичном коде: 01111111

‘A’ & 127: 01000001.

Если мы хотим установить для старшего разряда 1, удобна операция OR (или)

ch = ch | 128

‘A’ 11000001

127 10000000

‘A’ | 128 11000001.

Поразрядные операции удобны для хранения в сжатом виде информации о состоянии on/off (вкл/выкл). В одном байте можно хранить 8 таких флагов.

Операция сдвига. Форма представления:

value >> число позиций; value<< число позиций.

Пример. Двоичное представление числа х = 9: 00001001.

Тогда x = 9<<3: 01001000,

x = 9>>3 : 00000001.

Пример. Пусть unsigned char x = 255 в двоичном виде 11111111.

Значения выражения сдвига будут иметь вид:

Х = х<<3: 11111000

Х = х>>3: 00011111

X = x>>5: 00000111.

 

 



<== предыдущая лекция | следующая лекция ==>
Операции над адресами | Вложение конструкции оператора if


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.