9 / 9 / 1
Регистрация: 06.11.2011
Сообщений: 122
1

Обьединения

17.02.2012, 16:54. Показов 861. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос по обьединениям.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    union ob{
            int w;
            char c[4];
            }k;
 
    scanf("%d",&k.w);
    
    for(int i=0;i<4;i++)
        { printf("%c\t",k.c[i]); }
 
    puts("\n");
    return 0;
}
имеется обьединение. Вроде всё правильно прописал.. надеюсь.. собственно, по-скольку память выделяется общая и под инт и под чар, то забивая значение W хочу через массив чаров вывести по-битово. Но никак не получается.. выводит какие-то левые символы( подскажите где я что пропустил.. или так вообще в принципе не реально сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.02.2012, 16:54
Ответы с готовыми решениями:

OpenCV: найти соотношение площади пересечения двух фигур до их обьединения
Всем привет! Изучаю OpenCV и столкнулась с таким заданием: есть картинка, на которой нарисовано...

обьединения union
вот собственно код struct х{ union { struct a { ...

Не поддерживается выражение обьединения / MS Access
Собственно создал запрос , подключил к дельфи. В ADOQuery запрос не пашет, пишет не поддерживается...

Проблема обьединения ноутбуков в сеть Wi-Fi и подключения их к интернету
Здраствуйте. Имею два ноутбука. Один из них подключен к локальной сети и имеет доступ через нее к...

10
Эксперт С++
5827 / 3478 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
17.02.2012, 17:01 2
вместо char используй unsigned char. Выводи результат не как символы, а как числа (в любом удобном представлении)
0
9 / 9 / 1
Регистрация: 06.11.2011
Сообщений: 122
17.02.2012, 17:17  [ТС] 3
Спасибо! сейчас попробую..

Добавлено через 11 минут
Нет, допустим ввожу:
4, в инт, а выводит оно 4 0 0 0 ...
0
Эксперт С++
5827 / 3478 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
17.02.2012, 17:28 4
Цитата Сообщение от Eugen-S Посмотреть сообщение
Нет, допустим ввожу:
4, в инт, а выводит оно 4 0 0 0 ...
все правильно. У тебя int занимает 4 байта, и, судя по всему, на твоей платформе little-endian порядок байтов. Т.е. числа 4 0 0 0 - это коэффициенты разложения числа 4 в позиционной системе счисления с основанием 256, начиная от младшего байта к старшему:
https://www.cyberforum.ru/cgi-bin/latex.cgi?4 = \sum \limits_{i=0}^3 A_i 256^i = A_0 \cdot 256^0 + A_1 \cdot 256^1 + A_2 \cdot 256^2 + A_3 \cdot 256^3 = 4 \cdot 256^0 + 0 \cdot 256^1 + 0 \cdot 256^2 + 0 \cdot 256^3, \qquad A = \left{4, 0, 0, 0 \right}
Т.е. представление числа 4 в виде переменной типа int на твоей машине состоит из четырех байтов, из которых младший равен 4, а остальные равны нулю
0
9 / 9 / 1
Регистрация: 06.11.2011
Сообщений: 122
17.02.2012, 17:40  [ТС] 5
а в двоичную систему никак не переведет?

допустим я вот беру обьединение:

union s {
double w;
char s[8];
};

забиваю W=1; то выведет 1 0 0 0 0 0 0 0 , так? не( не выводит( дабл вообще выдает значения.. типа.. 0 0 0 0 * * * * и там где * какие-то цифры большие( если 2 ввожу то пишет 0 0 0 0 64 204 204 204 , не обьяснишь почему так?

и, почему 256? что-то я про это не слышал .. думал оно в двоичной долго выдать..
0
Эксперт С++
5827 / 3478 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
17.02.2012, 17:44 6
Для примера, я ввел 100500 и получил результат:
Код
148 136 001 000
Это соответсвует такому разложению:
https://www.cyberforum.ru/cgi-bin/latex.cgi?148 \cdot 256^0 + 136 \cdot 256^1 + 1 \cdot 256^2 + 0 \cdot 256^3 = 148 + 34816 + 65536 = 100500

Добавлено через 1 минуту
Цитата Сообщение от Eugen-S Посмотреть сообщение
и, почему 256? что-то я про это не слышал .. думал оно в двоичной долго выдать..
потому, что https://www.cyberforum.ru/cgi-bin/latex.cgi?2^8 = 256, а 8 - это размер байта в битах, т.е. число разрядов в байте.

Цитата Сообщение от Eugen-S Посмотреть сообщение
а в двоичную систему никак не переведет?
ручками надо, ручками
Цитата Сообщение от Eugen-S Посмотреть сообщение
забиваю W=1; то выведет 1 0 0 0 0 0 0 0 , так? не( не выводит( дабл вообще выдает значения.. типа.. 0 0 0 0 * * * * и там где * какие-то цифры большие( если 2 ввожу то пишет 0 0 0 0 64 204 204 204 , не обьяснишь почему так?
это связано с представлением в памяти компьютера чисел с плавающей точкой. Можешь об этом прочитать в Википедии или тут: https://www.cyberforum.ru/blogs/18334/blog88.html
1
9 / 9 / 1
Регистрация: 06.11.2011
Сообщений: 122
17.02.2012, 17:47  [ТС] 7
Спасибо!) А вопрос по работе с аргументами командной строки и файлами, можно тут задать или новую темку?
0
Эксперт С++
5827 / 3478 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
17.02.2012, 17:53 8
Цитата Сообщение от Nameless One Посмотреть сообщение
ручками надо, ручками
вот простой пример печати беззнакового 8-разрядного числа в двоичном представлении
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <stdlib.h>
 
void print_as_binary(unsigned char c)
{
    int i;
    for(i = 7; i >= 0; --i)
        putchar((1 << i) & c ? '1' : '0');      
}
 
int main(void)
{
    print_as_binary((unsigned char) 4);
    putchar('\n');
    exit(0);
}
0
Эксперт С++
5827 / 3478 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
17.02.2012, 17:55 9
Цитата Сообщение от Eugen-S Посмотреть сообщение
Спасибо!) А вопрос по работе с аргументами командной строки и файлами, можно тут задать или новую темку?
если по аргументам командной строки - лучше тут: https://www.cyberforum.ru/cpp-... 47908.html
если вопрос по файлам - то лучше новую тему
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
17.02.2012, 19:49 10
Цитата Сообщение от Nameless One Посмотреть сообщение
вместо char используй unsigned char.
И чем это обусловлено?
0
Эксперт С++
5827 / 3478 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
18.02.2012, 04:29 11
go, тем, что unsigned char всегда принято использовать при работе с чистыми байтами
0
18.02.2012, 04:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.02.2012, 04:29
Помогаю со студенческими работами здесь

Insert для обьединения двух таблиц в одну
Подскажите как правильно написать запрос для того чтобы с двух таблиц БД и значений из Едитов...

макрос для обьединения таблиц со всех листов одной книги в одну
как обьединить таблицы или все листы в одной книге в один лист


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

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

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