русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

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


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Короткі теоретичні відомості


Дата додавання: 2014-11-28; переглядів: 858.


Елементарною одиницею збереження інформації є біт. Бітові (двійкові, порозрядні) операції дають можливість маніпулювати окремими бітами цілочисельних змінних. Біт може приймати 0 або 1. Порозрядні операції можна виконати тільки над цілочисельними типами int, long i char.

Операції порозрядного зсуву.Існує дві операції для зсуву бітів в цілочисельних змінних на задане число позицій. Операція << зсуває біт вліво, а операція >>- вправо. Синтаксис

x << n ; x>> n

Кожна з операцій зсуває біти на n позицій в вказаному напрямі. При зсуві вправо n старших бітів заповнюється нулями, а при зсуві вліво заповнюються молодші біти. Наприклад,

Двійкове число 00001100 (12) при зсуві вправо на 2 розряди = 00000011 (3)

Двійкове число 00001100 (12) при зсуві вліво на 3 розряди = 01100000 (96)

Двійкове число 00001100 (12) при зсуві вправо на 3 розряди = 00000001 (1)

Двійкове число 00110000 (48) при зсуві вліво на 3 розряди = 10000000 (128)

Операції зсуву можна використати для множення і ділення цілих чисел на числа, рівні степеням 2.

Зсув на n позицій вліво еквівалентний множенню на 2n, вправо - ділення на 2n,. Результат множення може бути правильний тільки в тому випадку, коли при зсуві не пройшло переповнення, тобто ні один біт не втратився при зсуві за границі старшого розряду. Ділення шляхом зсуву вправо є цілочисельним, при якому відкидається дробова частина результату. Наприклад, при зсуві вправо число 5 (00000101) на одну позицію з метою розділити його на 2, результат буде рівний 2 (00000010), а не 2.5 Приклад програми.

#include <stdio.h>

int main( ) {

unsigned int y, x = 255;

int i;

for (i = 1; i < 8; i++)

{ y = x << i; Множення

printf("%d\t%d\t%d\n", x, i, y); }

for (i = 1; i < 8; i++)

{ y = x >> i; Ділення

printf("%d\t%d\t%d\n", x, i, y); }}


<== попередня лекція | наступна лекція ==>
Приклад виконання лабораторної роботи | Результат


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн