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

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

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

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

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

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

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

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

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

58
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
25.08.2011, 22:52 #41
Бинарный поток - это несколько неправильное выражение. Правильное выражение - поток открытый в двоичном режиме и связанный с двоичным файлом.
Смотреть тему Файловые потоки. Бинарные файлы. режимы открытия: ios::binary
0
Olga_
842 / 184 / 18
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 22:55 #42
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Если поток бинарный, то ... - одинаково быстро читаются-пишутся. Так как никаких преобразований не производится.
Иногда такую информацию (поток) называют сырыми байтами, то есть как они хранятся в памяти компьютера, так и передаются.
1
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 22:56 #43
Цитата Сообщение от AzaKendler Посмотреть сообщение
ну если честно то каюсь не дошел я еше до потоков. на контейнерах вишу
Да ладно, не дошли. А вы cin, cout, printf/fprintf, scanf/fscanf, puts/fputs, gets/fgets и подобными пользовались? От оно и есть работа с потоками

Добавлено через 40 секунд
Имею ввиду потоки ввода/вывода stdin, stdout, stderr
0
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 22:57  [ТС] #44
talis, ну я имел ввиду что не дошел до места в книге Страуструпа где он их подробно расписывает как и что. А так конечно пользуюсь насколько знаю настолько и пользуюсь
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 22:58 #45
Как уже говорил ValeryLaptev, когда вы читаете в char, программа не преобразует текст в число а когда вы читаете в int, float, double и так далее, идёт преобразование, которое занимает время
0
Olga_
842 / 184 / 18
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 23:08 #46
Да, кстати, AzaKendler, учитывая название темы, про сами биты тоже не забывайте, научитесь работать с ними: выделять, преобразовывать и т.д.
2
alex_x_x
бжни
2454 / 1660 / 134
Регистрация: 14.05.2009
Сообщений: 7,162
25.08.2011, 23:30 #47
Цитата Сообщение от AzaKendler Посмотреть сообщение
регистрами и в каком регистре будет единичка столько и ноликов будет перед ней в двоичном представлении. разве нет?
8 *sizeof(Type) - 1
ну для тех платформ, где в байте восемь бит
0
morphling
26.08.2011, 01:26
  #48

Не по теме:

Цитата Сообщение от alkagolik Посмотреть сообщение
это я к вот этому а игрек я просто второй раз добавил чтобы посмотреть не одинаковые ли будут значения, но забыл вписать на форум. Короче каждый раз разные, как уже говорилось всякий "мусор"... поэтому если надо случайные числа просто не надо инициализировать переменную . Это юмор конечно, а то кто всерьез подумает.
так можно указатель создать типо
*p = new(int);
еще переменную взять
x - например
x = *p;
free(p);
и так в цикле гонять... вот и рандомные числа

0
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
26.08.2011, 09:54  [ТС] #49
Olga_, конечно. да будет так биты биты эвривере

Добавлено через считанные минуты
количество нулей которое я указывал в последних примерах - оно конечно же меньше действительного.talis прекрасно понял метафору.
Я уже в одной только этой теме убедился что надо печатать ОЧЕНЬ точно иначе найдутся те кто интерпретирует неверно. Поэтому по точному количеству ноликов в этом вопросе смотрим пост от ValeryLaptev и вот еще я постил

и хотелось бы понимать что имеется ввиду
Цитата Сообщение от Olga_ Посмотреть сообщение
научитесь работать с ними: выделять, преобразовывать и т.д.
думаю начинающим всем будет интересно.
0
Olga_
842 / 184 / 18
Регистрация: 01.08.2011
Сообщений: 502
26.08.2011, 11:03 #50
Цитата Сообщение от AzaKendler Посмотреть сообщение
думаю начинающим всем будет интересно.
Посмотрите пример:
http://www.cyberforum.ru/showthread.php?p=1933146
0
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
26.08.2011, 11:53  [ТС] #51
хороший пример. благодарю
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
26.08.2011, 12:36 #52
AzaKendler, вот ещё: как обменять значения между двумя переменными, не вовлекая в это третью переменную:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main( int argc, char ** argv )
{
    int a = 10, b = 12;
 
    printf( "a = %d, b = %d\n", a, b );
 
    a ^= b;
    b ^= a;
    a ^= b;
 
    printf( "a = %d, b = %d\n", a, b );
 
    return 0;
}
Суть в чём: оператор ^ - это оператор битового XOR. ^= это всё равно, что +=.

Код
a = 1010
b = 1100

a = a ^ b   1010
            1100 XOR
            ----
            0110

b = b ^ a   1100
            0110 XOR
            ----
            1010 <---- новое значение b

a = a ^ b   0110
            1010 XOR
            ----
            1100 <---- новое значение a
0
ValeryLaptev
Эксперт С++
1049 / 828 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
26.08.2011, 12:43 #53
talis, это только для целых. Во-вторых, для отрицательных работает?
В-третьих, есть вариант с операцией вычитания. Я его не помню (так как никогда не пользуюсь заумными конструкциями), но ИМХО надо просто заменить операцию исключающее или на вычитание.
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
26.08.2011, 12:47 #54
ValeryLaptev, да я и не спорю, что для целых. Более того, они должны быть одинакового размера. Но тема-то "расскажите про биты" - вот я и рассказываю.

Для отрицательных работает, а куда оно денется?

Добавлено через 1 минуту
К тому же если пошаманить, то и для float работает:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int main( int argc, char ** argv )
{
    float a = -10.0, b = -12.0;
 
    printf( "a = %f, b = %f\n", a, b );
 
    unsigned *pA = &a; /* sizeof( unsigned ) = 4 = sizeof( float ) */
    unsigned *pB = &b;
 
    *pA ^= *pB;
    *pB ^= *pA;
    *pA ^= *pB;
 
    printf( "a = %f, b = %f\n", a, b );
 
    return 0;
}
0
kazak
3057 / 2378 / 255
Регистрация: 11.03.2009
Сообщений: 5,438
Завершенные тесты: 1
26.08.2011, 12:49 #55
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
talis, это только для целых. Во-вторых, для отрицательных работает?
Будет работать для всех типов, поддерживающих порязрядное исключающее или.
0
diagon
Higher
1937 / 1203 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.08.2011, 13:04 #56
Цитата Сообщение от talis Посмотреть сообщение
вот ещё: как обменять значения между двумя переменными, не вовлекая в это третью переменную:
Угу, так можно еще нод кратко вычислять.
C++
1
while ( b^=a^=b^=a%=b ); //теперь в a лежит нод
0
AzaKendler
214 / 116 / 14
Регистрация: 30.05.2011
Сообщений: 1,772
26.08.2011, 13:06  [ТС] #57
talis, небольшой оффтоп. не приходилось ли решать часом?
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
26.08.2011, 13:14 #58
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
вариант с операцией вычитания. Я его не помню...
C++
1
2
3
  a += b;
  b = a - b;
  a -= b;
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
26.08.2011, 13:44 #59
Цитата Сообщение от AzaKendler Посмотреть сообщение
talis, небольшой оффтоп. не приходилось ли решать часом?
нет, не приходилось. хотя это интресно
0
26.08.2011, 13:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2011, 13:44
Привет! Вот еще темы с решениями:

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

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

Кто может объяснить a = a + b?
Сейчас разбирал функцию for. Но суть не в этом. Меня застопорило такое...

Кто может объяснить?
Кто может объяснить как это делать? Задание 1. В оперативной памяти вектор int...


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

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

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