-8 / 1 / 0
Регистрация: 18.10.2011
Сообщений: 36
|
||||||
1 | ||||||
Вывод чисел в двоичном виде26.10.2012, 12:32. Показов 48238. Ответов 16
Метки нет (Все метки)
камрады, добры день. есть проблема с программой, которая выводит числа в двоичном виде.
например, для типов int, сhar, unsigned int выводит (вроде) правильно. а вот long unsigned int выводит как-то странно. например, для числа 1 в бинарном виде получается два бита равны единице. output: sizeof(long unsigned int) = 8 sizeof(int) = 4 sizeof(char) = 1 sizeof(unsigned int) = 4 (int) -5 11111111111111111111111111111011 (int) -4 11111111111111111111111111111100 (int) -3 11111111111111111111111111111101 (int) -2 11111111111111111111111111111110 (int) -1 11111111111111111111111111111111 (int) 0 00000000000000000000000000000000 (int) 1 00000000000000000000000000000001 (int) 2 00000000000000000000000000000010 (int) 3 00000000000000000000000000000011 (int) 4 00000000000000000000000000000100 (int) 5 00000000000000000000000000000101 unsigned int 1 00000000000000000000000000000001 char -2 11111110 long unsigned int 1 0000000000000000000000000000000100000000000000000000000000000001
укажите ошибку или объясните мне, почему два бита равны единице для числа long unsigned int lu=1;
0
|
26.10.2012, 12:32 | |
Ответы с готовыми решениями:
16
Вывод числа, представленного в десятичной системе, в двоичном виде без циклов и массивов Вывод десятичных чисел в двоичном виде Вывод числа в двоичном виде Вывод десятичного числа в двоичном виде |
-8 / 1 / 0
Регистрация: 18.10.2011
Сообщений: 36
|
|
26.10.2012, 14:31 [ТС] | 3 |
благодарю.
но ваш способ меняет порядок бит. мне не по нраву. тем более меня больше уже интересует именно ответ на мой вопрос.
0
|
26.10.2012, 14:51 | 4 | |||||
Не знаю с чем это связано. У меня работает такой вариант:
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|||||||||||
26.10.2012, 15:28 | 5 | ||||||||||
Сообщение было отмечено Памирыч как решение
Решение
lazybiz, как-то не гуманно для значения
Вот "универсальный" вариант, но с макросом
0
|
-8 / 1 / 0
Регистрация: 18.10.2011
Сообщений: 36
|
||||||
26.10.2012, 21:40 [ТС] | 7 | |||||
64 единицы не выводится. у меня вторым параметром sizeof
Добавлено через 1 минуту каждый пришёл, написал свой мега вариант. а по сути самого вопроса? Добавлено через 6 минут беглым взгядом: ваши коды выводят число наоборот. это круто, видимо. в прниципе проблема решается вот так: перед единицей, биты которой я сдвигаю влево, можно указать тип:
0
|
-8 / 1 / 0
Регистрация: 18.10.2011
Сообщений: 36
|
|
26.10.2012, 22:08 [ТС] | 10 |
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
|
|||||||||||||||||||||
26.10.2012, 22:21 | 11 | ||||||||||||||||||||
вот у тебя ошибка
1 приводится к int (32 разряда) в результате два раза выскакивает 1 надо её объявить как
у меня (VS2008) long равен int (32 разряда) посему использовал long long (64 разряда) вот подправленая функция которая работает у меня
Добавлено через 3 минуты а можно сразу объявить 1 длинной для моего компилятора
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
26.10.2012, 22:40 | 12 |
Не по теме: Лень за тряпкой лезть, мониор протирать. (Но словечко получилось симпатичное) А профессионалы в этом случае поступают просто. Ищите свой баг. Отладчик пошаговый, вывод промежуточных результатов. А вы все - "мой код, мой код". Да его никто и не глядел. И не будет, скорее всего. Вы видимо думаете, что нашли какую-то редкую ошибку у транслятора. Возможно, это и так. Но все-таки сначала ищите ошибку у себя. И еще. Имейте в виду, что вам тут никто ничего не должен. Это форум, площадь. Пришли люди, каждый думает о своем, что-то зацепило - "ля-ля-ля" Если вы уж занялись этим делом, относитесь к нему серьезно, Удачи. Добавлено через 2 минуты А вот тут я оказался неправ, что меня радует
0
|
-8 / 1 / 0
Регистрация: 18.10.2011
Сообщений: 36
|
|
26.10.2012, 23:25 [ТС] | 14 |
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
26.10.2012, 23:57 | 15 |
Все зависит только от тебя. от того, как ты научишься с этой машинкой обращаться. Ведь если ты не успел вовремя затормозить - кто виноват? автомобиль или ты? И даже если отказали тормоза - виноват ты, что не учел этого момента и не вовремя прошел техобслуживание
0
|
-8 / 1 / 0
Регистрация: 18.10.2011
Сообщений: 36
|
|
27.10.2012, 00:16 [ТС] | 16 |
0
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
27.10.2012, 10:04 | 17 |
Что именно не описано? То, что 1 имеет тип int? или то, что для << тип результата определяется по левому операнду? или то что сдвиг на значение превышающее битовую ширину операнда UB?
2
|
27.10.2012, 10:04 | |
27.10.2012, 10:04 | |
Помогаю со студенческими работами здесь
17
Вывод на экран слова в двоичном виде Вывод содержимого регистров в двоичном виде Вывод данных в двоичном виде без использования интегрированных функций Длинная арифметика, представления чисел в двоичном виде Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |