С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 32, средняя оценка - 4.78
darkAngel
Технофашист
217 / 200 / 4
Регистрация: 11.03.2009
Сообщений: 883
#1

Двоичные константы (вопрос ради интереса) - C++

17.02.2011, 23:50. Просмотров 4397. Ответов 14
Метки нет (Все метки)

Интересна причина, почему нет возможности задавать именно двоичные.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.02.2011, 23:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двоичные константы (вопрос ради интереса) (C++):

Двоичные деревья! - C++ Builder
Срочно нужно перейти на С++ (до этого прогил только на Делфи), нужен синтаксис реализации двоичного дерева на С++. Может кто-нибудь скинуть...

двоичные файлы - C++
Помогите, не могу сообразить как написать программу. Дан файл F, содержит сведения о датах рождения сотрудников(фамилия, число, месяц...

Двоичные файлы - C++
У меня есть код программы работающий с текстовыми файлами, #include <iostream> #include <conio.h> #include <cstdlib> #include...

Двоичные файлы - C++
Работа с двоичными файлами. Создать файл, состоящий из n вещественных чисел. Вывести на экран все числа данного файла с нечетными...

Двоичные числа на С++ - C++
Доброго времени суток. Восьмеричные числа на С++ вроде представляются с префиксом 0, т.е. 0124 Шестнадцатеричные - 0x, т.е. 0x124, а...

двоичные файлы - C++
дан файл целых чисел. Создать два новых файла, первый из которых содержит положительные числа из исходного файла (в обратном потядке), а...

14
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
18.02.2011, 00:01 #2
Нет необходимости ) С шестнадцатиричными константами работать не сложнее и они намного менее громоздки.
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
18.02.2011, 00:05 #3
в асме например можно, но для целей си этого как сказал rangerx не нужно
единственное применение могло быть - решение лабораторных задачек на форуме :-)
0
darkAngel
Технофашист
217 / 200 / 4
Регистрация: 11.03.2009
Сообщений: 883
18.02.2011, 00:09  [ТС] #4
да нет, мне тут понадобилось работать с битами переменной как с флагами и было бы удобно задавать их двоично

Добавлено через 50 секунд
ну так и приходится через ассемблерные вставки задавать. Просто стало интересно, почему нет возможности
0
darkAngel
Технофашист
217 / 200 / 4
Регистрация: 11.03.2009
Сообщений: 883
18.02.2011, 00:13  [ТС] #5
p.s. мне ещё интересен наибыстрый способ определения состояния оперделённого бита в байте. Кто какие знает?
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
18.02.2011, 00:16 #6
darkAngel, | и шестнадцатеричная константа?
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
18.02.2011, 03:39 #7
Цитата Сообщение от darkAngel
способ определения состояния оперделённого бита в байте. Кто какие знает?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
 
int main(void)
{
    unsigned char c = 'a';
 
    printf("%d", (c & 01) != 0);
    printf("%d", (c & 02) != 0);
    printf("%d", (c & 04) != 0);
    printf("%d", (c & 010) != 0);
    printf("%d", (c & 020) != 0);
    printf("%d", (c & 040) != 0);
    printf("%d", (c & 0100) != 0);
    printf("%d", (c & 0200) != 0);
    putchar('\n');
    
    printf("%d", c >> 0 & 01);
    printf("%d", c >> 1 & 01);
    printf("%d", c >> 2 & 01);
    printf("%d", c >> 3 & 01);
    printf("%d", c >> 4 & 01);
    printf("%d", c >> 5 & 01);
    printf("%d", c >> 6 & 01);
    printf("%d", c >> 7 & 01);
    putchar('\n');
    
    return 0;    
}
Код
[guest@localhost tests]$ ./t
10000110
10000110
[guest@localhost tests]$
1
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,389
Записей в блоге: 2
Завершенные тесты: 1
18.02.2011, 11:51 #8
Цитата Сообщение от darkAngel Посмотреть сообщение
мне ещё интересен наибыстрый способ определения состояния оперделённого бита в байте. Кто какие знает?
Определение бита - операция "И", установка бита - операция "ИЛИ".

Не по теме:

accept, а зачем восьмиричная с/с ? Чтоб запутать?

0
darkAngel
Технофашист
217 / 200 / 4
Регистрация: 11.03.2009
Сообщений: 883
18.02.2011, 15:05  [ТС] #9
вот возник вопрос, как использовать ассемблерные вставки в методах класса? Из-за того, что методы являются inline функциями, вставку делать нельзя.
Пробовал и макросом, но компилятор не получилось обмануть.
Как быть?

Добавлено через 2 минуты
p.s. вызывать обычную функцию с ассемблерной вставкой в методах не подходит, т.к. вызовов планируется огромное количество и лишнее сохранение в стек и выгрузка недопустимая роскошь. А полностью писать всё на ассемблере не охото.
0
accept
19.02.2011, 05:11
  #10

Не по теме:

Цитата Сообщение от Kastaneda
accept, а зачем восьмиричная с/с ? Чтоб запутать?
не, она легко преобразуется в двоичную, как и шестнадцатеричная
например число 0777 представляет из себя три группы битов 111 111 111

1
Байт
Нарушитель
Эксперт C
16696 / 10960 / 1689
Регистрация: 24.12.2010
Сообщений: 21,388
19.02.2011, 19:54 #11
Цитата Сообщение от darkAngel Посмотреть сообщение
p.s. мне ещё интересен наибыстрый способ определения состояния оперделённого бита в байте. Кто какие знает?
C
1
 if (B&(1<<k)) ...// состояние k-того бита в байте B (счет k - с нуля)
Можно еще быстрее
C
1
2
char S[8] = { 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80 };
 if (B&S[k]) ...
3
Scar
1 / 1 / 0
Регистрация: 04.07.2011
Сообщений: 5
04.07.2011, 06:20 #12
Почему нельзя можно!
C++
1
int x=0xb010101010;
0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
04.07.2011, 06:55 #13
Python
1
2
3
>>> 0b111000
56
>>>
0
taras atavin
3570 / 1754 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
04.07.2011, 08:01 #14
Цитата Сообщение от darkAngel Посмотреть сообщение
да нет, мне тут понадобилось работать с битами переменной как с флагами и было бы удобно задавать их двоично
Добавлено через 50 секунд
ну так и приходится через ассемблерные вставки задавать.
Ты бредишь? Число не зависит от системы счисления, так что с битами можно хоть с троичной работать, а шестнадцатеричная компактнее и удобнее.
0
Scar
1 / 1 / 0
Регистрация: 04.07.2011
Сообщений: 5
05.07.2011, 06:36 #15
Цитата Сообщение от Scar Посмотреть сообщение
Почему нельзя можно!
C++
1
int x=0xb010101010;
блин ошибся нельзя...
1
05.07.2011, 06:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.07.2011, 06:36
Привет! Вот еще темы с ответами:

Двоичные файлы - C++
Здравствуйте. Кому не сложно, помогите, пожалуйста, решить задачу. Не забуду сказать &quot;спасибо&quot;. &quot;Для заданного двоичного файла...

Интереса ради - C++ Qt
Прошу строго не судить появилась такая задумка в голове и не знаю можно ли ее решить. class A: public QObject { Q_OBJECT ...

Вопрос про константы - Delphi
Вопрос состоит в следующем, например, я объявляю константу const key : array of longint = ($00220015, $00010002); Она пападает в...

Комбинаторно- вероятностный смысл константы пи, гамма функция и обобщение константы пи - Комбинаторика
Добавлено через 33 минуты Известна формула для выражения \pi, ...


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

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

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