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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 13:25     может кто расскажет про биты? #1
вопрос
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
25.08.2011, 22:52     может кто расскажет про биты? #41
Бинарный поток - это несколько неправильное выражение. Правильное выражение - поток открытый в двоичном режиме и связанный с двоичным файлом.
Смотреть тему Файловые потоки. Бинарные файлы. режимы открытия: ios::binary
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 22:55     может кто расскажет про биты? #42
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Если поток бинарный, то ... - одинаково быстро читаются-пишутся. Так как никаких преобразований не производится.
Иногда такую информацию (поток) называют сырыми байтами, то есть как они хранятся в памяти компьютера, так и передаются.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 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
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 22:57  [ТС]     может кто расскажет про биты? #44
talis, ну я имел ввиду что не дошел до места в книге Страуструпа где он их подробно расписывает как и что. А так конечно пользуюсь насколько знаю настолько и пользуюсь
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 22:58     может кто расскажет про биты? #45
Как уже говорил ValeryLaptev, когда вы читаете в char, программа не преобразует текст в число а когда вы читаете в int, float, double и так далее, идёт преобразование, которое занимает время
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 23:08     может кто расскажет про биты? #46
Да, кстати, AzaKendler, учитывая название темы, про сами биты тоже не забывайте, научитесь работать с ними: выделять, преобразовывать и т.д.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
25.08.2011, 23:30     может кто расскажет про биты? #47
Цитата Сообщение от AzaKendler Посмотреть сообщение
регистрами и в каком регистре будет единичка столько и ноликов будет перед ней в двоичном представлении. разве нет?
8 *sizeof(Type) - 1
ну для тех платформ, где в байте восемь бит
morphling
26.08.2011, 01:26
  #48

Не по теме:

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

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

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

и хотелось бы понимать что имеется ввиду
Цитата Сообщение от Olga_ Посмотреть сообщение
научитесь работать с ними: выделять, преобразовывать и т.д.
думаю начинающим всем будет интересно.
Olga_
 Аватар для Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
26.08.2011, 11:03     может кто расскажет про биты? #50
Цитата Сообщение от AzaKendler Посмотреть сообщение
думаю начинающим всем будет интересно.
Посмотрите пример:
http://www.cyberforum.ru/showthread.php?p=1933146
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
26.08.2011, 11:53  [ТС]     может кто расскажет про биты? #51
хороший пример. благодарю
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 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
ValeryLaptev
Эксперт C++
1005 / 784 / 46
Регистрация: 30.04.2011
Сообщений: 1,595
26.08.2011, 12:43     может кто расскажет про биты? #53
talis, это только для целых. Во-вторых, для отрицательных работает?
В-третьих, есть вариант с операцией вычитания. Я его не помню (так как никогда не пользуюсь заумными конструкциями), но ИМХО надо просто заменить операцию исключающее или на вычитание.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 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;
}
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
26.08.2011, 12:49     может кто расскажет про биты? #55
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
talis, это только для целых. Во-вторых, для отрицательных работает?
Будет работать для всех типов, поддерживающих порязрядное исключающее или.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.08.2011, 13:04     может кто расскажет про биты? #56
Цитата Сообщение от talis Посмотреть сообщение
вот ещё: как обменять значения между двумя переменными, не вовлекая в это третью переменную:
Угу, так можно еще нод кратко вычислять.
C++
1
while ( b^=a^=b^=a%=b ); //теперь в a лежит нод
AzaKendler
 Аватар для AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
26.08.2011, 13:06  [ТС]     может кто расскажет про биты? #57
talis, небольшой оффтоп. не приходилось ли решать часом?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
26.08.2011, 13:14     может кто расскажет про биты? #58
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
вариант с операцией вычитания. Я его не помню...
C++
1
2
3
  a += b;
  b = a - b;
  a -= b;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2011, 13:44     может кто расскажет про биты?
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
26.08.2011, 13:44     может кто расскажет про биты? #59
Цитата Сообщение от AzaKendler Посмотреть сообщение
talis, небольшой оффтоп. не приходилось ли решать часом?
нет, не приходилось. хотя это интресно
Yandex
Объявления
26.08.2011, 13:44     может кто расскажет про биты?
Ответ Создать тему
Опции темы

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