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

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

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

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

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

вопрос
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2011, 13:25     может кто расскажет про биты?
Посмотрите здесь:
C++ Time.h кто расскажет или покажет
C++ кто может обьяснить про что тут говорится
C++ Задача про биты
C++ Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат
... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ... C++
C++ кто может С++
Кто может объяснить? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryLaptev
Эксперт С++
1035 / 814 / 48
Регистрация: 30.04.2011
Сообщений: 1,658
25.08.2011, 22:52     может кто расскажет про биты? #41
Бинарный поток - это несколько неправильное выражение. Правильное выражение - поток открытый в двоичном режиме и связанный с двоичным файлом.
Смотреть тему Файловые потоки. Бинарные файлы. режимы открытия: ios::binary
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 22:55     может кто расскажет про биты? #42
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Если поток бинарный, то ... - одинаково быстро читаются-пишутся. Так как никаких преобразований не производится.
Иногда такую информацию (поток) называют сырыми байтами, то есть как они хранятся в памяти компьютера, так и передаются.
talis
791 / 543 / 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
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
25.08.2011, 22:57  [ТС]     может кто расскажет про биты? #44
talis, ну я имел ввиду что не дошел до места в книге Страуструпа где он их подробно расписывает как и что. А так конечно пользуюсь насколько знаю настолько и пользуюсь
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
25.08.2011, 22:58     может кто расскажет про биты? #45
Как уже говорил ValeryLaptev, когда вы читаете в char, программа не преобразует текст в число а когда вы читаете в int, float, double и так далее, идёт преобразование, которое занимает время
Olga_
840 / 182 / 16
Регистрация: 01.08.2011
Сообщений: 502
25.08.2011, 23:08     может кто расскажет про биты? #46
Да, кстати, AzaKendler, учитывая название темы, про сами биты тоже не забывайте, научитесь работать с ними: выделять, преобразовывать и т.д.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
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
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
26.08.2011, 09:54  [ТС]     может кто расскажет про биты? #49
Olga_, конечно. да будет так биты биты эвривере

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

и хотелось бы понимать что имеется ввиду
Цитата Сообщение от 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
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
26.08.2011, 11:53  [ТС]     может кто расскажет про биты? #51
хороший пример. благодарю
talis
791 / 543 / 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
Эксперт С++
1035 / 814 / 48
Регистрация: 30.04.2011
Сообщений: 1,658
26.08.2011, 12:43     может кто расскажет про биты? #53
talis, это только для целых. Во-вторых, для отрицательных работает?
В-третьих, есть вариант с операцией вычитания. Я его не помню (так как никогда не пользуюсь заумными конструкциями), но ИМХО надо просто заменить операцию исключающее или на вычитание.
talis
791 / 543 / 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
3032 / 2353 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
26.08.2011, 12:49     может кто расскажет про биты? #55
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
talis, это только для целых. Во-вторых, для отрицательных работает?
Будет работать для всех типов, поддерживающих порязрядное исключающее или.
diagon
Higher
1926 / 1192 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.08.2011, 13:04     может кто расскажет про биты? #56
Цитата Сообщение от talis Посмотреть сообщение
вот ещё: как обменять значения между двумя переменными, не вовлекая в это третью переменную:
Угу, так можно еще нод кратко вычислять.
C++
1
while ( b^=a^=b^=a%=b ); //теперь в a лежит нод
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
26.08.2011, 13:06  [ТС]     может кто расскажет про биты? #57
talis, небольшой оффтоп. не приходилось ли решать часом?
Thinker
Эксперт C++
4221 / 2195 / 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++ 3 задачи на С++.. Кто может...
Кто может объяснить a = a + b? C++
C++ кто нибудь знает?(про винмэйн)

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

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

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