Дата: Воскресенье, 09.01.2011, 08:55 | Сообщение # 6
Сообщений: [1475]
thitem, сказать по правде не совсем понял. Что значит побитный сдвиг? Вот у меня к примеру char, 8 бит, содержит число 10. При побитном сдвиге влево что произойдёт с битами и с самим числом, можешь сказать?
Добавлено (09.01.2011, 08:55) --------------------------------------------- И ещё народ, кто знает, как на C++ включить русские буквы в консоли? Вот мой код №1:
Code
#include <windows.h> //нужна для функции CharToOem int main() { char buf[10]; char str[10]="qwertyuiop"; CharToOem(str, buf); //преобразование cout<< buf << endl; return 0; }
Дата: Воскресенье, 09.01.2011, 11:16 | Сообщение # 9
Сообщений: [14]
Quote (Hagrael)
Что значит побитный сдвиг? Вот у меня к примеру char, 8 бит, содержит число 10. При побитном сдвиге влево что произойдёт с битами и с самим числом, можешь сказать?
Число 10 в двоичном виде будет иметь вид 00001010. При сдвиге влево на единицу, все сдвинется вот так: 00010100. (Получится 20) Еще раз сдвигаем, получится 00101000 (40)
Аналогично работает сдвиг вправо, если 00001010 сдвинуть вправо на единицу, получится 00000101 (5).
Сдвиг влево и вправо часто применяется для умножения и деления целого числа на 2, 4, 8, 16 и т.д., так как двоичные операции работают быстрее арифметических.
Дата: Воскресенье, 09.01.2011, 15:47 | Сообщение # 11
Сообщений: [14]
Quote (Hagrael)
А что с копированием данных в объект и из объекта? В этом я ваще ничё не понял.
Дело в том, что в C++ есть возможность переопределения операций для пользовательских типов данных.
Пример переопределения операции присваивания:
Code
class my_type { public: int operator=(int a) //функция, выполняющаяся при использовании оператора "=" с аргументом типа int { cout << a;//выведем на экран значение return a; } };
Далее в main создаем объект: my_type a; А затем: a=50;
В результате на экран выведет 50.
Примерно таким же образом в iostream.h создан класс, в котором переопределена операция "<<" и создан объект этого класса "cout".
Дата: Воскресенье, 09.01.2011, 16:17 | Сообщение # 12
Сообщений: [1475]
thitem, в общем я это так понял. В С++ при попытке сделать арифметическую операцию с объектом можно сделать какое-то действие, в аргумент функции попадает число, которое справа. Фактически, функция как пишется, так и должна вызываться:
Code
class my_class { int operator >> (int a) { cout << a; } } my_class obj; obj >> 50;
Здесь ведь выйдет 50, так?
Добавлено (09.01.2011, 16:17) --------------------------------------------- Да, круто! Большое тебе спасибо!