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

Работа с битами - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Время ядра виндовса http://www.cyberforum.ru/cpp-beginners/thread949620.html
Ребята всем привет) у меня вопрос по загрузки ядер, на тачке 12 ядер) прилагаю фотку загрузки ядер, меня волнует первое что работают ядра не на максимум и второе то что виндовс откусывает своим ядром...
C++ устройство на rs-232 народ, подскажите с чего начать и что загуглить, так то бы создать какое нибудь представление о том как написать прогу, которая сформирует массив чисел, которые в свою очередб придут на вход... http://www.cyberforum.ru/cpp-beginners/thread949602.html
C++ А возможно ли?
Перейду сразу к вопросу. Вопрос: Возможно ли реализовать клиент-серверное приложение, и допустим я с сервера отправляю что-то клиенту и чтоб оно моментально в программе прям сразу без обновлений,...
Сумма двух цыфр не работает C++
#include<stdio.h> #include<conio.h> int main() { int a,b, y; printf("Vvedite chislo a:"); scanf("%d",&a); printf("Vvedite chislo b:");
C++ Сумма двух цыфр http://www.cyberforum.ru/cpp-beginners/thread949592.html
только учусь) #include<stdio.h> #include<conio.h> int main() { int a,b, y;
C++ Начинающему копировать слова из текстового файла ≈∏омогите начинающему хелп копировать слова из текстового файла. Создать файл с текстом:Printf " 1.pig 2.mouse 3.reptile "c:\book.txt Одну информацию под числом вывести на экран например... подробнее

Показать сообщение отдельно
ValeryS
Модератор
6679 / 5088 / 475
Регистрация: 14.02.2011
Сообщений: 17,081
07.09.2013, 11:09
Цитата Сообщение от TamaGOch Посмотреть сообщение
char tmp = 3; /*0000 0011*/
правильно
Цитата Сообщение от TamaGOch Посмотреть сообщение
tmp = -3; /*1000 0011*/
неправильно
прочитай что такое дополнительный код
грубо говоря это код который дополняет до 0
-3+3=0
в двоичном виде
1111 1101(-3)
0000 0011(3)
=
0000 0000

подойдем по другому
0-3=-3
0000 0000(0)
-
0000 0011(3)
=
1111 1101(-3)

практически делается так инвертируются все биты и добавляется 1
0000 0011(3)
1111 1100(инверсия)
1111 1101(-3)

1111 1101(-3)
0000 0010(инверсия)
0000 0011(3)
Цитата Сообщение от TamaGOch Посмотреть сообщение
tmp = tmp ^ 1; /*0000 0010*/
правильно
Цитата Сообщение от TamaGOch Посмотреть сообщение
tmp = tmp ^ 1; /*1000 0100*/
неправильно
почитай что такое "исключающие или"(XOR)
вот таблица истинности
0^0=0
0^1=1
1^0=1
1^1=0
другими словами если биты равны то результат 0
если не равны то результат 1

используется часто для инверсии битов
например
0000 0011^0000 0001=0000 0010
0000 0010^0000 0001=0000 0011
или при шифровании( простейшем)
если число обработать XOR ключом, а потом еще раз то получим первоначальное число

Добавлено через 3 минуты
Цитата Сообщение от TamaGOch Посмотреть сообщение
однако хочется в последней операции получить значение tmp = -2, т.е. 1000 0010
-2 это 1111 1110
открой виндовый калькулятор в режиме программиста и посмотри как представляются числа

Добавлено через 3 минуты
Цитата Сообщение от TamaGOch Посмотреть сообщение
однако хочется в последней операции получить значение tmp = -2, т.е. 1000 0010
3^1=2;
0000 0011(3)
0000 0001(1)
=
0000 0010(2)

-3^1=-4
1111 1101(-3)
0000 0001(1)
=
1111 1100(-4)
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru