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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 13:25     может кто расскажет про биты? #1
вопрос
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
25.08.2011, 20:34     может кто расскажет про биты? #21
Цитата Сообщение от AzaKendler Посмотреть сообщение
talis, я имел ввиду следующее. если я присваиваю инту значение 1. все остальное место занимают нули?
0000000000000000001 (примерно так??). чтобы зарезервировать именно память под него - забито ли остальное место до 32 бит нулями?
мне кажется пора вам открыть страшную тайну
в этом мире существует не только с и с# но и еще другой язык - ASM
такие операции происходят на уровне команд процессора (транслированный асм в машинные команды)
x86 имеет машинное слово в 32 бита, присваивание ей происходит за одну команду mov, естественно в этом случае будет только еденица
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
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
ого сколько ответов, пока код царапал
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 20:38     может кто расскажет про биты? #23
alkagolik, а откуда появилось y= 134514315?

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

собственно, да, x не был инициализирован нулём
это я к вот этому
Обычно компиляторы инициализируют int нулём
а игрек я просто второй раз добавил чтобы посмотреть не одинаковые ли будут значения, но забыл вписать на форум. Короче каждый раз разные, как уже говорилось всякий "мусор"... поэтому если надо случайные числа просто не надо инициализировать переменную . Это юмор конечно, а то кто всерьез подумает.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 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


Так что количество копируемой информации определяется инструкцией.
LosAngeles
Заблокирован
25.08.2011, 21:05     может кто расскажет про биты? #27
Цитата Сообщение от alkagolik Посмотреть сообщение
Обычно компиляторы инициализируют int нулём
объекты со static storage duration инициализируются конструкторами по умолчанию, то есть инт - 0. Про остальные ничего не сказано
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 21:18  [ТС]     может кто расскажет про биты? #28
talis, я все про те же яйца только в профиль. 32 битный инт. 1 это 0000000000001.
eax c 1 это? разве не те же 0000000000001. про двоичную систему и разрядность и единичку с ее представление в 32 разр.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 21:26     может кто расскажет про биты? #29
AzaKendler, да, 1 = 01 = 001 = 0001 = 00001... так же как в десятичной системе 15 = 015 = 0015 = 00015.
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 21:30  [ТС]     может кто расскажет про биты? #30
джмп.Это хумора немного
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
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
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 22:12  [ТС]     может кто расскажет про биты? #32
ValeryLaptev, спасибо Валерий. хорошее инфо
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
25.08.2011, 22:17     может кто расскажет про биты? #33
AzaKendler, про представление целых погугли по словам "дополнительный код". А про дробные - IEEE-754 - это стандарт, который в настоящее время реализован ВО ВСЕХ компьютерах.
Кстати, еще надо помнить, что в памяти числа лежат по принципу: младший байт по младшему адресу. Если рисовать на бумажке, то получится по - арабски, справа-налево.
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 22:19     может кто расскажет про биты? #34
AzaKendler, лучше книжки почитайте про представление чисел, понятие дополнительного кода, почему именно этот код и т.д. Не ленитесь в книжках "ковыряться", на форуме могут подкорректировать ваши знания, но это не заменит хороших книг.
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 22:28  [ТС]     может кто расскажет про биты? #35
Olga_, книжки это то что я читаю. правда электронные. но все же. те опытные парни и.. дамы, которые присутствуют на форуме, в процессе общения, пусть иногда агрессивного, приносят очень много пользы новичкам. таким как я
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 22:37     может кто расскажет про биты? #36
Цитата Сообщение от AzaKendler Посмотреть сообщение
Olga_, книжки это то что я читаю. правда электронные. но все же. те опытные парни и.. дамы, которые присутствуют на форуме, в процессе общения, пусть иногда агрессивного, приносят очень много пользы новичкам. таким как я
Ну смотрите сами. Тогда форум вам в помощь
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 22:39  [ТС]     может кто расскажет про биты? #37
И Ольга, может я тему сформулировал неверно раз на такой совет нарвался? Ссуть вопроса в том что я решил для себя разобраться почему при работе с потоками ввода\вывода операции с чар в разы быстрее инта в том примере от гризлика. Поэтому пришлось пустится в такую переписку и задать вопросы. Параллельно много разной полезной инфы собрал. :cofee2:
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
25.08.2011, 22:43     может кто расскажет про биты? #38
AzaKendler, при работе с потоками - тут много разных причин.
Если поток текстовый, то чары пишутся-читаются без преобразования, а числа - с преобразованием. Там большая функция перевода работает. Она хоть и быстрая, но время занимает.
Если поток бинарный, то пофигу - одинаково быстро читаются-пишутся. Так как никаких преобразований не производится.
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 22:43     может кто расскажет про биты? #39
Цитата Сообщение от AzaKendler Посмотреть сообщение
И Ольга, может я тему сформулировал неверно раз на такой совет нарвался? Ссуть вопроса в том что я решил для себя разобраться почему при работе с потоками ввода\вывода операции с чар в разы быстрее инта в том примере от гризлика. Поэтому пришлось пустится в такую переписку и задать вопросы. Параллельно много разной полезной инфы собрал. :cofee2:
Лучше будем считать, что я неверно поняла вопрос
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2011, 22:48     может кто расскажет про биты?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 22:48  [ТС]     может кто расскажет про биты? #40
ValeryLaptev, да там парни как раз писали про это а мне интересно было что за разница в представлениях в итоге получается между чар 1 и инт 1 от туда и пошло. Хочется спросить а что такое бинарный поток))? Но по совету Ольги полезу в гугл и накачаю книжек.
ну если честно то каюсь не дошел я еше до потоков. на контейнерах вишу. прочитал и теперь опять задания...не скоро еще потоки
Yandex
Объявления
25.08.2011, 22:48     может кто расскажет про биты?
Ответ Создать тему
Опции темы

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