Форум программистов, компьютерный форум CyberForum.ru

Сочините пример как можно проще на сдвиг - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перевод из Delphi в C++ http://www.cyberforum.ru/cpp-beginners/thread571133.html
Есть код на Делфи помогите пожалуйста перевести его в С++Bulder. ...... const MapFName = 'D:\MIKHAILP\DOCUM\Projects\ISTC_robot \Pult\v04_1\Map\RTC_Dvor\RTC_Dvor.gst'; //интересует в принципе эта строчка, вернее ее объявление в С++ .... procedure TForm1.FormCreate(Sender: TObject); begin Map1.GeoSet := MapFName;
C++ С++ и Matlab Часть дипломного проекта решил реализовать по средствам совмещения Билдера и Matlaba. И возникла ошибка с которой никак не удается совладать. В этом участке кода , идет формирование матрицы , и отправка команды. Окно матлаба инициализируется , но не воспринимает ни команду , ни отправляемый массив. if(mclInitializeApplication(NULL,0)) //инициализация мсл ... http://www.cyberforum.ru/cpp-beginners/thread571122.html
C++ Описать функцию Ln1(x, ε) вещественного типа
Описать функцию Ln1(x, ε) вещественного типа (параметры x, ε — вещественные, |x| < 1, ε > 0), находящую приближенное значение функции ln(1 + x): ln(1 + x) = x – x2/2 + x3/3 – … + (–1)n•xn+1/(n+1) + … . В сумме учитывать все слагаемые, модуль которых больше ε. С помощью Ln1 найти приближенное значение ln(1 + x) для данного x при шести данных ε.
C++ RadioGroup проверка на нажатость
Здравствуйте=) Подскажите, как реализовать условие, которое проверяет, что RadioGroup нажат(любой из itemов)?
C++ Описать структуру с именем Znak http://www.cyberforum.ru/cpp-beginners/thread571087.html
1.Описать структуру с именем Znak,содержащую поля фамилия и имя знак зодиака день рождения(массив из 3х чисел) 2.Ввод с клавиатуры данных в массив,содерж. из 8 элементов типа Znak,записи упорядочены по датам дней рождения Вывод на экран информации о человеке,чья фамилия введена с клавиатуры.Если нет-выдать сообщение
C++ вывод массива в сортировке В функции сортировки при каждом выполнении цикла надо выводить текущий массив, после сортировки. void sort2(int a,int n) { int countswap=0; //счетчик обменов int countcompare=0; //счетчик сравнений int i,k,j; for (i=0;i<n;++i) { int temp=a; //текущая позиция printf("\nТекущая позиция: %d\n",temp); подробнее

Показать сообщение отдельно
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
11.05.2012, 17:49
>>А что такое "сдвиги"?

Число представляет собой набор битов. Бит может принимать значение 0 или 1.
Переменная имеет определенный размер в байтах: char имеет размер в 8 бит, таким образом максимально представимое число данным примитивным типом данных это 127 ( если char знаковый).
short имеет размер в 2 байта, int имеет размер 4 байта.
Ключевое слово signed означает что 1 бит занимает знак.
Ключевое слово unsigned означает, что все биты занимает число.
Операционная система Windows являлась 32 битной, адресация от 00000000 до ffffffff

unsogned char 127 в двоичном виде это 01111111 ( 8 бит)

При сдвиге << на единицу 01111111 превратится в 11111110
При сдвиге << на два 01111111 превратится в 11111100
При сдвиге << на три 01111111 превратится в 11111000
При сдвиге << на четыре 01111111 превратится в 11110000
При сдвиге << на пять 01111111 превратится в 11100000
При сдвиге << на шесть 01111111 превратится в 11000000
При сдвиге << на семь 01111111 превратится в 10000000
При сдвиге << на восемь 01111111 превратится в 00000000

При сдвиге >> на единицу 01111111 превратится в 00111111
При сдвиге >> на два 01111111 превратится в 00011111
При сдвиге >> на три 01111111 превратится в 00001111
При сдвиге >> на четыре 01111111 превратится в 00000111
При сдвиге >> на пять 01111111 превратится в 00000011
При сдвиге >> на шесть 01111111 превратится в 00000001
При сдвиге >> на семь 01111111 превратится в 00000000
При сдвиге >> на восемь 01111111 превратится в 00000000

Примерs:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//вывод десятичного 18707 в двоичном виде
#include <stdio.h>
 
void main()
{
 printf("sizeof(unsigned int): %d \n", sizeof(unsigned int));
 unsigned int g = 18707;
 unsigned int g2;
 int j;
 for(j = 0;j < 32;j++)
 {
  g2 = g;
  g2 = g2 << j;
  g2 = g2 >> 31;
  printf("%d", g2);
 }
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//вывод десятичного 127 в двоичном виде
#include <stdio.h>
 
void main()
{
 printf("sizeof(unsigned int): %d \n", sizeof(unsigned int));
 unsigned char g = 127;
 unsigned char g2;
 int j;
 for(j = 0;j < 8;j++)
 {
  g2 = g;
  g2 = g2 << j;
  g2 = g2 >> 7;
  printf("%d", g2);
 }
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru