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

Определить, что старший байт числа равен значению переменной с - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
BonaBerry
 Аватар для BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
25.03.2014, 11:59     Определить, что старший байт числа равен значению переменной с #1
Вот такое задание.... Буду рада хотя бы алгоритму выполнения.
Дана переменная char c. Напишите цикл для подсчета в заданном диапазоне целых чисел (int) количества чисел, удовлетворяющих условию: старший байт числа равен значению переменной с.

Добавлено через 11 минут
И покажите, пожалуйста, еще как накладывать маски и пользоваться операторами " | & << >>> " Например, нужно:
00110011 11111111 000000000 010110101
превратить в такое, т.е. середику проинвертировать:
00110011 000000000 11111111 010110101


пока я могу только выводить число:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//  {
//    
//   int    y;
//   std::cout <<"Enter Number"<<endl;
//   cin>>y;
//   int  x=0,  vid, null;
//     int i=sizeof(int);// битовый оператор число в двоичном виде (0000)*8 =0000 0000 0000 00000
////******************************************************************************************/
//  /***ПЕРВОНОЧАЛЬНО*******/
//  std::cout <<"fist look:"<<endl;
//  for (int i=31; i>=0; i--)  // цикл перебора значений
//              {   
//                  vid=((y>>i)&1);    
//                  std::cout <<vid;
//              }
//                  std::cout << endl;
//system("Pause"); 
//      return 0;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2014, 11:59     Определить, что старший байт числа равен значению переменной с
Посмотрите здесь:

C++ Дано трёхзначное число.Определить, равен ли квадрат этого числа сумме его цифр.
Дано натуральное число.Определить,сколько раз в нём встречается минимальная цифра(например, для числа 102200 ответ равен 3,для числа 40330-2,для числ C++
Для целого числа А выделить старший байт и поставить его на место младшего байта. старший байт при этом обнулить. C++
определить равен ли квадрат заданного двухзначного числа C++
Определить, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа VS2010 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
25.03.2014, 17:19     Определить, что старший байт числа равен значению переменной с
  #21

Не по теме:

задание не совсем однозначно

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BonaBerry
 Аватар для BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
26.03.2014, 10:56  [ТС]     Определить, что старший байт числа равен значению переменной с #22
aLarmanда, спасибо огромное!
Сейчас распишу по шагам - да бы внести полольную ясность...что я не просто хОчу сдуть и свалить)))
1.через побитовое умножение & консервируем 2ой байт - z. (н/р 1010 & 1111= 1010)
2.через побитовое умножение & консервируем 3тий байт - z2.
3.через побитовое умножение & консервируем края.
Далее займемся установкой и сбором байтов, используем логическое ИЛИ (|), для установки, (0000 |1101 =1101) :
и вуаля -все готово!

ValeryS
, Мне кажется тут действительно неверно использовано слово при формулировки задания, так как при инвертации края нам не сохранить, сам понимаешь. А суть упражнения как раз, задействовать побитовые логические операции.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
26.03.2014, 11:36     Определить, что старший байт числа равен значению переменной с #23
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от BonaBerry Посмотреть сообщение
так как при инвертации края нам не сохранить, сам понимаешь
не понимаю
смотри нужно инвертировать два первых байта в бите ( так для примера чтобы много не расписывать)
0xFF^0x03 =0xFC
1111 1111
^
0000 0011
-----------
1111 1100

0x00^0x03 =0x03

0000 0000
^
0000 0011
-----------
0000 0011

0x55^0x03=0x56

0101 0101
^
0000 0011
----------
0101 0110

как видишь инвертируются два младших бита, 6 старших остаются как были
исключающая ИЛИ с 0 оставляет бит как есть с 1 инвертирует

Цитата Сообщение от BonaBerry Посмотреть сообщение
А суть упражнения как раз, задействовать побитовые логические операции.
исключающая ИЛИ является такой же битовой операцией как И и ИЛИ


у нее есть еще интересная особенность если применить два раза то результат равен исходному числу

например
0x05^0x03=0x06

0x06^0x03=0x05;

используется в простейших шифровшиках/дешифровшиках

и еще один фокус поменять две переменных местами не использую третью

C++
1
2
3
a=a^b;
b=a^b;
a=a^b;
возьмем например те же 5 и 3 a=5 b=3
a=a^b; a=5^3=6;
b=a^b; b=6^3=5;
a=a^b; a=6^5=3;
как видишь поменялись местами
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
26.03.2014, 11:45     Определить, что старший байт числа равен значению переменной с #24
Цитата Сообщение от ValeryS Посмотреть сообщение
два первых байта в бите
О_О wtf
ValeryS
26.03.2014, 12:06
  #25

Не по теме:

Цитата Сообщение от aLarman Посмотреть сообщение
О_О wtf
А вот

BonaBerry
 Аватар для BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
26.03.2014, 12:30  [ТС]     Определить, что старший байт числа равен значению переменной с #26
ValerySб хватит чудить)))
А вообще огромное спасибо кажется за крайние 24 часа я весьма поумнела и все благодаря всем вам))
и так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
        
        int i=sizeof(int);
        int vid, vidz;
        int y, z;
     
        std::cout <<"y = ";
        cin >>y;
 
        for (int i=31; i>=0; i--) // цикл перебора значений
        {
            vid=((y>>i)&1);
            cout <<vid;
        }
        cout << endl;
 
 
        z=y^0x00ffff00;             // Исключающие ИЛИ маска
        for (int i2=31; i2>=0; i2--) // цикл перебора значений
        {
            vidz=((z>>i2)&1);
            cout <<vidz;
        }
        cout << endl;
 
 
         system("pause");
    return 0;
}
Добавлено через 7 минут
Цитата Сообщение от ValeryS Посмотреть сообщение
у нее есть еще интересная особенность если применить два раза то результат равен исходному числу
например
0x05^0x03=0x06
0x06^0x03=0x05;
используется в простейших шифровшиках/дешифровшиках
и еще один фокус поменять две переменных местами не использую третью
Да, здрово!!! Из серии подобное излечивается подобным.
ValeryS
26.03.2014, 12:42
  #27

Не по теме:

Цитата Сообщение от BonaBerry Посмотреть сообщение
А вообще огромное спасибо кажется за крайние 24 часа я весьма поумнела и все благодаря всем вам))
я тебя не обижу, если скажу что для этого есть специальная кнопка под каждым сообщением " спасибо"?
если хочешь кого то поблагодарить нажми её

BonaBerry
 Аватар для BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
26.03.2014, 16:31  [ТС]     Определить, что старший байт числа равен значению переменной с #28
Дана переменная char c. Напишите цикл для подсчета в заданном диапазоне целых чисел (int) количества чисел, удовлетворяющих условию: старший байт числа равен значению переменной с.

Я уточнила насчет формулировки вышеизложенного задания.
У нас есть:
char c = 1. //00000001
нужно найти интовый диапазон чисел. Который может выглядеть примерно так.

00000001 bla bla bla

Я понимаю, что мне нужно:
1. Считать число c ;
2. Потом занести его в инт, в старший байт (например сдвигом).
3. Далее при помощи цикла организовать поиск чисел где старший такой-то.
Но как-то как-то я в реальности этого себе не представляю. Ведь по факту это же огромные числа.
И диапазон даже не взять. Вообще тогда тут нужно организовать вывод наоборот из байтового из вида в десятичный, да?

Начала оформлять. И и у меня он почему-то считывает символы, а не символьное представление чисел (как-то коряво написано), да, вообще врет(((
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{
 
        char c;  // 1байт=8 битов 
        cout <<"Enter c=";
        cin >>c; 
        char vidc;
        int vidd2,d2, vid2, d3;
        
 
        cout<<endl;
        
        for (int i=7; i>=0; i--)
            {
                vidc=((c>>i)&1);
                cout<<vidc;
            }
        cout<<endl;
        d2=c;
        d3=d2<<24;
 
        for (int i2=31; i2>0;i2--)
            {
                vidd2=((d3>>i2)&1);
                cout<<vidd2;
            }
        cout<<endl;
 
        system("pause");
       return 0;
    }
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
26.03.2014, 16:38     Определить, что старший байт числа равен значению переменной с #29
Цитата Сообщение от BonaBerry Посмотреть сообщение
он почему-то считывает символы, а не символьное представление чисел
что то я не совсем понимаю о чем Вы, но предположу, что vidc имеет тип чар, и соответственно когда Вы его выводите (оно может быть 0 или 1) выводится символ с кодом 0 или 1

Добавлено через 33 секунды
C++
1
2
3
4
5
for (int i=7; i>=0; i--)
{
vidc=((c>>i)&1);
cout<<(int)vidc;
}
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
26.03.2014, 16:49     Определить, что старший байт числа равен значению переменной с #30
Цитата Сообщение от BonaBerry Посмотреть сообщение
нужно найти интовый диапазон чисел. Который может выглядеть примерно так.
тебе весь перебор нужен?
или предельные значения?
BonaBerry
 Аватар для BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
26.03.2014, 16:59  [ТС]     Определить, что старший байт числа равен значению переменной с #31
Цитата Сообщение от aLarman Посмотреть сообщение
что то я не совсем понимаю о чем Вы, но предположу, что vidc имеет тип чар, и соответственно когда Вы его выводите (оно может быть 0 или 1) выводится символ с кодом 0 или 1
да, я понимаю что он как раз и считывает у меня закодированный символ.Но ведь мне нужен код этого самого символа, который я хочу узнать посредством ввода десятичного числа. Например:
char c = 'A'; // = 65; 00000101

Добавлено через 3 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
тебе весь перебор нужен?
или предельные значения?
предельные значения
вот ввожу я char c=8;
А на выходе получаю ответ что вот в числах от 14458878 до 14758971 в старшем байте 00001000.
Я так себе это представляю.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
26.03.2014, 17:13     Определить, что старший байт числа равен значению переменной с #32
Цитата Сообщение от BonaBerry Посмотреть сообщение
предельные значения
не нужно никаких циклов

один передел
0xRR000000
второй
0xRRFFFFFF

RR это значение байта который вводится

подсказать, или попробуешь сама разобраться
Цитата Сообщение от BonaBerry Посмотреть сообщение
да, я понимаю что он как раз и считывает у меня закодированный символ.Но ведь мне нужен код этого самого символа, который я хочу узнать посредством ввода десятичного числа. Например:
char c = 'A'; // = 65; 00000101
тебе нужно ввести число от 0 до 255
но поскольку >> переопределен он вводит символы
тут три пути
или приводить как показал aLarman,
или вводить переменную int потом кастрировать до char
или использовать scanf
C++
1
scanf("%i",&c);
мне по душе третий
вводить можно в любой системе( в пределах разумного)
255 десятичное
0377 восьмеричная
0xFF шеснадцетиричное
BonaBerry
 Аватар для BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
27.03.2014, 11:52  [ТС]     Определить, что старший байт числа равен значению переменной с #33
Вообще не идет, вроде уже в рот положили, а не переживать (((((((((((
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{
 
        int c, vid, q;  // 1байт=8 битов 
        cout <<"Enter c from 01 to 255 =";
        cin >>c; 
        int i=sizeof(int);
        
        int d=c<<24;
 
        cout<<endl;
 
        for (int i=31; i>=0; i--)  
            {   
                    vid=((d>>i)&1);    
                    std::cout <<vid;
                }
                    std::cout << endl;
 
 
for(int i2=0x00ffffff; i2<=0x00000000; i2++)
{
 int d=c<<24;// создаем переменный в которой старший байт равен c
 int deap=i2 & 0xFF000000; //удаляем все кроме старшего байта
 int deap2=deap | d;  // сравниваем
 if (deap == deap2)  // сравниваем
   q++;
}
        cout<<endl;
 
        system("pause");
       return 0;
    }
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
27.03.2014, 12:17     Определить, что старший байт числа равен значению переменной с #34
Цитата Сообщение от BonaBerry Посмотреть сообщение
for(int i2=0x00ffffff; i2<=0x00000000; i2++)
цикл без единой итерации
Цитата Сообщение от BonaBerry Посмотреть сообщение
C++
1
int deap2=deap | d; // сравниваем
чаво ?)
Цитата Сообщение от BonaBerry Посмотреть сообщение
C++
1
if (deap == deap2) // сравниваем
а вот так не проще?
C++
1
if(d == deap)
Цитата Сообщение от BonaBerry Посмотреть сообщение
C++
1
int d=c<<24;// создаем переменный в которой старший байт равен c
Выше Вы уже объявили эту переменную и вычислили ее значение, зачем создавать локальную еще раз, и вычислять значение на каждой итерации

Добавлено через 43 секунды

Не по теме:

и плиз, вставляейте теги в свой код

SatanaXIII
27.03.2014, 14:19
  #35
 Комментарий модератора 
BonaBerry, оформляете пожалуйста свой код в соответствующие теги.
Или вручную - [ CPP] код [ /CPP], или в окне отправки сообщения слева вверху кнопочка C++ - выделяете свой код и нажимаете ее.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
27.03.2014, 14:26     Определить, что старший байт числа равен значению переменной с #36
Цитата Сообщение от BonaBerry Посмотреть сообщение
Вообще не идет, вроде уже в рот положили,
посмотри в первых постах я уже предлагал решение
а если нужен диапазон то
C++
1
2
3
4
int min=c<<24;
int max=c<<24;
min&=0xFF000000;// это даже лишнее 0 и так будут в младших
max|=0x00FFFFFF;
BonaBerry
 Аватар для BonaBerry
3 / 3 / 0
Регистрация: 21.09.2013
Сообщений: 73
27.03.2014, 14:43  [ТС]     Определить, что старший байт числа равен значению переменной с #37
Цитата Сообщение от aLarman Посмотреть сообщение
цикл без единой итерации
Цитата Сообщение от BonaBerry Посмотреть сообщение
Код C++
1
int deap2=deap | d; // сравниваем
чаво ?)

конечно, же битовое или, устанавливаем знак, операцию изменила, а комментарий нет
Вообще мне стыдно
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,056
27.03.2014, 14:52     Определить, что старший байт числа равен значению переменной с #38
Цитата Сообщение от BonaBerry Посмотреть сообщение
Вообще мне стыдно
если б ты знала сколько тупых ошибок у меня бывает

могу предложить такой алгоритм написания программ, когда начинал очень мне он помогал
простой пример сложить два числа результат на экран
сначала пишем алгоритм текстом оформляя комментариями
C++
1
2
3
4
// объявить перемененные
// задать значение
// сложить и присвоить результат
// вывести на экран
потом кодируем этот алгоритм
C++
1
2
3
4
5
6
7
8
9
// объявить перемененные
int a,b,c;
// задать значение
a=5;
b=10;
// сложить и присвоить результат
c=a+b;
// вывести на экран
printf("%d \n",c);
главное к любому языку подходит
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
27.03.2014, 15:03     Определить, что старший байт числа равен значению переменной с #39
Цитата Сообщение от BonaBerry Посмотреть сообщение
Вот такое задание.... Буду рада хотя бы алгоритму выполнения.
C++
1
return (x>>(sizeof(x)*8-8))==c;
.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2014, 15:08     Определить, что старший байт числа равен значению переменной с
Еще ссылки по теме:

Найти среди двузначных чисел такие, что квадрат числа равен кубу суммы цифр этого числа C++
C++ функция изменяет старший байт числа на заданное значение не изменяя младший байт
Определить, равен ли квадрат числа учетверенной сумме кубов его цифр C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
aLarman
27.03.2014, 15:08     Определить, что старший байт числа равен значению переменной с
  #40

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
C++
1
sizeof(x)*8-8
(sizeof(x)-1)*8 - правило выноса за скобку хД

Yandex
Объявления
27.03.2014, 15:08     Определить, что старший байт числа равен значению переменной с
Ответ Создать тему
Опции темы

Текущее время: 10:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru