С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.86/14: Рейтинг темы: голосов - 14, средняя оценка - 4.86
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
1

может кто расскажет про биты?

25.08.2011, 13:25. Просмотров 2505. Ответов 58
Метки нет (Все метки)

вопрос
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2011, 13:25
Ответы с готовыми решениями:

Time.h кто расскажет или покажет
Доброе время суток! имеем структуру struct Promo:tm //Создаем...

кто может обьяснить про что тут говорится
С помощью этого оператора & можно также выделять и устанавливать значения от-...

Задача про биты
Написать функцию, которая возвращает число, полученное из числа X,в котором все...

Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат
нужна помощь в битовых операциях.Ввести целое число A. Инвертировать все биты...

... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ...
Доброго времени суток всем, столкнулся с проблемой по С++,требуется написать...

58
alex_x_x
бжни
2455 / 1661 / 134
Регистрация: 14.05.2009
Сообщений: 7,162
25.08.2011, 20:34 21
Цитата Сообщение от AzaKendler Посмотреть сообщение
talis, я имел ввиду следующее. если я присваиваю инту значение 1. все остальное место занимают нули?
0000000000000000001 (примерно так??). чтобы зарезервировать именно память под него - забито ли остальное место до 32 бит нулями?
мне кажется пора вам открыть страшную тайну
в этом мире существует не только с и с# но и еще другой язык - ASM
такие операции происходят на уровне команд процессора (транслированный асм в машинные команды)
x86 имеет машинное слово в 32 бита, присваивание ей происходит за одну команду mov, естественно в этом случае будет только еденица
0
alkagolik
Заблокирован
25.08.2011, 20:34 22
судя по коду нет
C++
1
2
3
4
5
6
7
8
#include <iostream>
 
int main()
{
    int x;
    std::cout << x;
    return 0;
}
x= 3506164;
y= 134514315
ого сколько ответов, пока код царапал
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 20:38 23
alkagolik, а откуда появилось y= 134514315?

собственно, да, x не был инициализирован нулём
0
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 20:41  [ТС] 24
alex_x_x, ну зачем этот сарказм Алекс про мувы пуши леа и асм я обшее представление имею.
вопрос был в уточнении того как представлена единица в 32 битном инте в двоичной системе. асм оперирует регистрами и в каком регистре будет единичка столько и ноликов будет перед ней в двоичном представлении. разве нет?
0
alkagolik
Заблокирован
25.08.2011, 20:49 25
Цитата Сообщение от talis Посмотреть сообщение
alkagolik, а откуда появилось y= 134514315?

собственно, да, x не был инициализирован нулём
это я к вот этому
Обычно компиляторы инициализируют int нулём
а игрек я просто второй раз добавил чтобы посмотреть не одинаковые ли будут значения, но забыл вписать на форум. Короче каждый раз разные, как уже говорилось всякий "мусор"... поэтому если надо случайные числа просто не надо инициализировать переменную . Это юмор конечно, а то кто всерьез подумает.
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 21:02 26
Цитата Сообщение от AzaKendler Посмотреть сообщение
асм оперирует регистрами и в каком регистре будет единичка столько и ноликов будет перед ней в двоичном представлении. разве нет?
Не совсем. Я плохо знаком с синтаксисом Intel (парадокс, знаю :-) ), у AT&T есть, например, movl и movb. movl (move long) копирует 4 байта, когда movb (move byte) копирует один байт. Вот пример (для GCC):

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
#include <stdio.h>
 
int main( int argc, char ** argv )
{
    int x = 0xaaaaaaaa, y = 0xffffffff;
 
    printf( "movl test\n%x %x\n", x, y );
 
    asm( "movl %[x], %%eax\n"
         "movl %%eax, %[y]"
         : [y] "=g" (y)
         : [x] "g" (x)
       );
 
    printf( "%x %x\n", x, y );
 
    x = 0xdddddddd;
    y = 0x77777777;
 
    printf( "\nmovb test\n%x %x\n", x, y );
 
    asm( "movb %[x], %%eax\n"
         "movb %%eax, %[y]"
         : [y] "=g" (y)
         : [x] "g" (x)
       );
 
    printf( "%x %x\n", x, y );
 
    return 0;
}
Вывод
movl test
aaaaaaaa ffffffff
aaaaaaaa aaaaaaaa

movb test
dddddddd 77777777
dddddddd 777777dd


Так что количество копируемой информации определяется инструкцией.
0
LosAngeles
Заблокирован
25.08.2011, 21:05 27
Цитата Сообщение от alkagolik Посмотреть сообщение
Обычно компиляторы инициализируют int нулём
объекты со static storage duration инициализируются конструкторами по умолчанию, то есть инт - 0. Про остальные ничего не сказано
0
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 21:18  [ТС] 28
talis, я все про те же яйца только в профиль. 32 битный инт. 1 это 0000000000001.
eax c 1 это? разве не те же 0000000000001. про двоичную систему и разрядность и единичку с ее представление в 32 разр.
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 21:26 29
AzaKendler, да, 1 = 01 = 001 = 0001 = 00001... так же как в десятичной системе 15 = 015 = 0015 = 00015.
1
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 21:30  [ТС] 30
джмп.Это хумора немного
0
ValeryLaptev
Эксперт С++
1052 / 831 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
25.08.2011, 21:52 31
AzaKendler, чего же тебе про биты-то рассказать?
Целый положительный int, равный 1 в 32-битном режиме Intel - это 0...01, нулей 31 штука. Оно же и беззнаковый int такой же.
Целый отрицательный int, то есть -1, в 32-битном режиме - это 1...1, единиц 32 штуки.
Целый положительный дробный 1.0 в 32-битном виде - это 0011111110...0
Целый отрицательный дробный -1.0 в 32-битном виде - это 1011111110...0
2
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 22:12  [ТС] 32
ValeryLaptev, спасибо Валерий. хорошее инфо
0
ValeryLaptev
Эксперт С++
1052 / 831 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
25.08.2011, 22:17 33
AzaKendler, про представление целых погугли по словам "дополнительный код". А про дробные - IEEE-754 - это стандарт, который в настоящее время реализован ВО ВСЕХ компьютерах.
Кстати, еще надо помнить, что в памяти числа лежат по принципу: младший байт по младшему адресу. Если рисовать на бумажке, то получится по - арабски, справа-налево.
1
Olga_
842 / 184 / 18
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 22:19 34
AzaKendler, лучше книжки почитайте про представление чисел, понятие дополнительного кода, почему именно этот код и т.д. Не ленитесь в книжках "ковыряться", на форуме могут подкорректировать ваши знания, но это не заменит хороших книг.
1
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 22:28  [ТС] 35
Olga_, книжки это то что я читаю. правда электронные. но все же. те опытные парни и.. дамы, которые присутствуют на форуме, в процессе общения, пусть иногда агрессивного, приносят очень много пользы новичкам. таким как я
1
Olga_
842 / 184 / 18
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 22:37 36
Цитата Сообщение от AzaKendler Посмотреть сообщение
Olga_, книжки это то что я читаю. правда электронные. но все же. те опытные парни и.. дамы, которые присутствуют на форуме, в процессе общения, пусть иногда агрессивного, приносят очень много пользы новичкам. таким как я
Ну смотрите сами. Тогда форум вам в помощь
0
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 22:39  [ТС] 37
И Ольга, может я тему сформулировал неверно раз на такой совет нарвался? Ссуть вопроса в том что я решил для себя разобраться почему при работе с потоками ввода\вывода операции с чар в разы быстрее инта в том примере от гризлика. Поэтому пришлось пустится в такую переписку и задать вопросы. Параллельно много разной полезной инфы собрал. :cofee2:
0
ValeryLaptev
Эксперт С++
1052 / 831 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
25.08.2011, 22:43 38
AzaKendler, при работе с потоками - тут много разных причин.
Если поток текстовый, то чары пишутся-читаются без преобразования, а числа - с преобразованием. Там большая функция перевода работает. Она хоть и быстрая, но время занимает.
Если поток бинарный, то пофигу - одинаково быстро читаются-пишутся. Так как никаких преобразований не производится.
0
Olga_
842 / 184 / 18
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 22:43 39
Цитата Сообщение от AzaKendler Посмотреть сообщение
И Ольга, может я тему сформулировал неверно раз на такой совет нарвался? Ссуть вопроса в том что я решил для себя разобраться почему при работе с потоками ввода\вывода операции с чар в разы быстрее инта в том примере от гризлика. Поэтому пришлось пустится в такую переписку и задать вопросы. Параллельно много разной полезной инфы собрал. :cofee2:
Лучше будем считать, что я неверно поняла вопрос
0
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 22:48  [ТС] 40
ValeryLaptev, да там парни как раз писали про это а мне интересно было что за разница в представлениях в итоге получается между чар 1 и инт 1 от туда и пошло. Хочется спросить а что такое бинарный поток))? Но по совету Ольги полезу в гугл и накачаю книжек.
ну если честно то каюсь не дошел я еше до потоков. на контейнерах вишу. прочитал и теперь опять задания...не скоро еще потоки
0
25.08.2011, 22:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2011, 22:48

кто может С++
Помогите пожалуйста срочно нужно, а времени совсем нет!!!

решите кто может
Дана последовательность из n целых чисел. Определить, все ли числа являются...

Кто может сделать?
Описать статический массив. Реализовать 2 способа инициализации массива...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru