0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 2
1

Битовые операции: работа с целым числом (long) как с "массивом" из четырех однобайтовых чисел (char)

20.11.2019, 22:57. Показов 747. Ответов 4
Метки нет (Все метки)

задали задачу, не понимаю, что хотят от меня в условии:/
Вот само условие:
Напишите функцию, позволяющую работать с целым числом (long) как с "массивом" из четырех однобайтовых чисел (char)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2019, 22:57
Ответы с готовыми решениями:

Напечатать фразу "мы нашли К грибов в лесу" согласовав окончание слова "гриб" с целым числом К
решить задачу для натурального числа К напечатать фразу "мы нашли К грибов в лесу" согласовав...

Ошибка: "char *concat(char *,.)": невозможно преобразовать аргумент 1 из "const char [4]" в "char *"
делал задание, но на строке 36 строке пишет, что "char *concat(char *,...)": невозможно...

Создать класс комплексных чисел и ввести операции: "+", "-", "*", "/".
пожалуйста-помогите написатьпрограмму!!! сижу на экзамене!!! вот само задание: создать класс...

Битовые операции - пояснить использование "&"
Приветствую. Интересует такой вопрос, использование "&" в языке С. Для примера - time_ptr =...

4
3531 / 2189 / 401
Регистрация: 09.09.2017
Сообщений: 9,001
21.11.2019, 11:40 2
C
1
2
3
4
union{
  uint32_t ival;
  uint8_t cval[4];
};
АХТУНГ! Писал сразу на форуме, компилировал биокомпилятором
0
Диссидент
Эксперт C
27197 / 16952 / 3747
Регистрация: 24.12.2010
Сообщений: 38,139
21.11.2019, 13:15 3
А можно и так
C++
1
2
3
4
uint32_t ival;
unsigned char *cval = (unsigned char *) (&ival);
  // или
uint8_t *cval = (uint8_t *) (&ival);
0
592 / 284 / 178
Регистрация: 06.06.2016
Сообщений: 545
21.11.2019, 23:43 4
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
33
34
35
36
37
38
39
40
41
42
43
 #include <iostream>
 
 typedef  unsigned char  byte;  // 1 байт
 typedef  unsigned long  ul;    // 4 байта????
 
 struct _4bytes
 {
    byte b1;
    byte b2;
    byte b3;
    byte b4;
 };
 
 // разобрать число n на байты
 _4bytes unzip( ul n )
 {
    byte b1 = (byte) (  n         & 0xFF );
    byte b2 = (byte) ( (n >> 8  ) & 0xFF );
    byte b3 = (byte) ( (n >> 16 ) & 0xFF );
    byte b4 = (byte) ( (n >> 24 ) & 0xFF );
    return { b1, b2, b3, b4 };
 }
 
 // cобрать из байтов число
  ul zip( _4bytes n )
  {
     return  ( n.b4 << 24 ) + ( n.b3 << 16 )
             + ( n.b2 << 8 ) + n.b1;
  }
 
 //----------------------------------------------------
 int main()
 {
    ul n = 100500;
    std::cout << zip( unzip( n ) ) << "\n"; // проверка
    // работаем:
    _4bytes B = unzip( n ); // разбили на байты
    std::cout << (int)B.b1 << " " << (int) B.b2 << " "
              << (int)B.b3 << " " << (int) B.b4 << "\n";
    // что-то делаем с байтами B.b1, B.b2, B.b3, B.b4 ...
    std::cout << zip( B ); // собрали их в число
    return 0;
 }
Замечание: Стандарт C++ не определяет размер целочисленных типов в байтах, а только минимальные диапазоны, которые они должны поддерживать. Тип unsigned long имеет длину не менее 32 бит.
Проверьте на своём компиляторе, должно быть sizeof( ul ) == 4.
1
3531 / 2189 / 401
Регистрация: 09.09.2017
Сообщений: 9,001
22.11.2019, 10:41 5
Цитата Сообщение от regio1961 Посмотреть сообщение
Замечание: Стандарт C++ не определяет размер целочисленных типов в байтах
... поэтому что Байт, что я использовали типы фиксированной разрядности: uint32_t, uint8_t. Они именно для этого и придуманы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2019, 10:41
Помогаю со студенческими работами здесь

Битовые операции. Xor, and и or против "маски" =)
Здраствуйте, уважаемые программисты и обидатели форума. У меня к вам следующий вопрос по поводу...

Робот может перемещаться в четырех направлениях ("С" - север, "З" - запад, "Ю" - юг, "В" - восток) и принимать
Робот может перемещаться в четырех направлениях (&quot;С&quot; - север, &quot;З&quot; - запад, &quot;Ю&quot; - юг, &quot;В&quot; -...

Пишет: "Несовместимые типы операндов "char" и "const char*"". Что делать?
#include &quot;stdafx.h&quot; #include &lt;ctime&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt;...

Как 1 ячейку с числом "10", разбить на 10 ячеек с числом "1"?
Доброго времени суток. Столкнулся с такой проблемой. Существует большой список лекарств в таблице...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru