Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
#1

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

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

вопрос
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2011, 13:25
Здравствуйте! Я подобрал для вас темы с ответами на вопрос может кто расскажет про биты? (C++):

Time.h кто расскажет или покажет - C++
Доброе время суток! имеем структуру struct Promo:tm //Создаем структуру! { std::string Client; //Название...

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

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

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

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

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

58
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 20:24  [ТС] #16
talis, я имел ввиду следующее. если я присваиваю инту значение 1. все остальное место занимают нули?
0000000000000000001 (примерно так??). чтобы зарезервировать именно память под него - забито ли остальное место до 32 бит нулями?
0
diagon
Higher
1932 / 1198 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
25.08.2011, 20:25 #17
Цитата Сообщение от talis Посмотреть сообщение
Обычно компиляторы инициализируют int нулём
Это какие, например?
P.S. если переменную объявить в глобальной области, то она инициализируется нулем.
0
fasked
Эксперт С++
4951 / 2531 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
25.08.2011, 20:26 #18
Цитата Сообщение от talis Посмотреть сообщение
Обычно компиляторы инициализируют int нулём, то есть при создании ему автоматически присваивается ноль
Обычно компиляторы как раз этого не делают. То есть если просто объвить int, то в ней будет мусор, который находился ранее в этом участке памяти.

Добавлено через 54 секунды
Цитата Сообщение от AzaKendler Посмотреть сообщение
если я присваиваю инту значение 1. все остальное место занимают нули?
0000000000000000001 (примерно так??).
Так. Но это не значит, что компилятор что-то где-то резервирует или забивает. Это просто представление единицы в двоичном виде.
1
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 20:28  [ТС] #19
fasked, спасибо подтвердил мои мысли. Значит я все верно расписал.
0
talis
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 20:31 #20
Цитата Сообщение от AzaKendler Посмотреть сообщение
talis, я имел ввиду следующее. если я присваиваю инту значение 1. все остальное место занимают нули?
0000000000000000001 (примерно так??).
AzaKendler, в общем и целом, да. Ведь 0x00000001 == 0x1 :-)

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

Не по теме:

Опоздал ответить...

1
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 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
792 / 544 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 20:38 #23
alkagolik, а откуда появилось y= 134514315?

собственно, да, x не был инициализирован нулём
0
AzaKendler
214 / 116 / 9
Регистрация: 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
792 / 544 / 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


Так что количество копируемой информации определяется инструкцией.
0
LosAngeles
Заблокирован
25.08.2011, 21:05 #27
Цитата Сообщение от alkagolik Посмотреть сообщение
Обычно компиляторы инициализируют int нулём
объекты со static storage duration инициализируются конструкторами по умолчанию, то есть инт - 0. Про остальные ничего не сказано
0
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 21:18  [ТС] #28
talis, я все про те же яйца только в профиль. 32 битный инт. 1 это 0000000000001.
eax c 1 это? разве не те же 0000000000001. про двоичную систему и разрядность и единичку с ее представление в 32 разр.
0
talis
792 / 544 / 37
Регистрация: 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 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 21:30  [ТС] #30
джмп.Это хумора немного
0
25.08.2011, 21:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.08.2011, 21:30
Привет! Вот еще темы с ответами:

может поможет кто? - C++
тебята я только недавно начал изучать язык С++ по книге Герберта шелтда. Кароче там один момент который я понять не могу а именно: тип...

3 задачи на С++.. Кто может... - C++
1. В заданой строке (ввести с клавиатуры) между словами вместо ропбула поставить запяьые. 2. Описать функцию - пользователя вставки...

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

Кто может объяснить? - C++
Кто может объяснить как это делать? Задание 1. В оперативной памяти вектор int X расположен, начиная с адреса B7F0. Какие значения примут...


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

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

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