Как вывести число в двоичном виде cи
Перейти к содержимому

Как вывести число в двоичном виде cи

  • автор:

Вывод двоичного числа в СИ

@avp без преобразования возможно вывести в этом чудесном языке? или нужно каждый символ обрабатывать и выводить?

12 фев 2019 в 17:46
0010 не является двоичным числом в синтаксисе Си
12 фев 2019 в 17:46
printf(«%s», «0010»); , не?
12 фев 2019 в 17:49

@Qada: Для утилитарных целей место двоичного вывода в языке С занял шестнадцатеричный вывод. Если вам все это нужно «для дела», то пользуйтесь шестнадцатеричным. Если же вам нужен именно двоичный (ибо «задание такое»), то да — «каждый символ обрабатывать и выводить».

12 фев 2019 в 18:09

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Вы даете printf восьмеричное число 10 и просите напечатать его как десятичное. Вам выводится 8 — вы ждали чего-то другого?

Не существует спецификации формата для вывода двоичных чисел, поэтому их надо выводить вручную. В качестве примера:

// Вывод байта в двоичном виде typedef unsigned char byte; int main() < byte b = 93; // Или любое другое for (int i = 0; i < 8; i++) < printf("%c", (b & 0x80) ? '1' : '0'); b printf("\n"); return 0; > 

Отслеживать
ответ дан 12 фев 2019 в 18:44
4,895 8 8 золотых знаков 16 16 серебряных знаков 29 29 бронзовых знаков

    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.3.1.5619

Как вывести число в двоичном виде cи

Форумчанин

Регистрация: 18.04.2009

Сообщений: 688

как вывести число в двоичной форме?

как вывести число в двоичной форме?
среда: vc
я прочёл МСДН, но так тока увидел cout cout про двоичную ничё

Форумчанин

Регистрация: 18.04.2009

Сообщений: 688

// TObase64.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) < short a; a = 6; ~a;//не работает. почему не знаю((((( поскажите плиз coutslength = 8 - slength; for (int i = 0; i

почему-то не работает ~a

Как записать число в файл в двоичном режиме?

int value = 11; // . . . 00001011
В строковом режиме можно просто использовать fprintf(fp, "%d", value) и тогда в файл запишется символьное представление числа 11.
А как записать в файл двоичное представление числа, т.е само число а не строку.
Знаю только про методы fread/fwrite , но с помощью них можно записать только массив данных.
А как записать в файл одиночное число?

  • Вопрос задан более трёх лет назад
  • 1645 просмотров

1 комментарий

Простой 1 комментарий

Массив из одного числа. В качестве массива попробуй указатель на число.
Решения вопроса 1
GrigorySvetov @GrigorySvetov

1. Если про бинарный вывод (т.е. когда сам символ смысловой нагрузки не несет, а несет номер символа в кодировке) ("настоящий" бинарный вывод).

Основной прикол в том, что массив в Си можно понимать как просто указатель на фиксированный по размеру набор значений, а саму переменную массива - как указатель на этот набор.
И действительно, так привычное нам обращение по индексу arr[i] в Си переводится в *(arr+i) (разыменование по указателю со смещением).
Поэтому когда мы пишем fwrite(arr, . ), на самом деле мы пишем туда УКАЗАТЕЛЬ. В остальном Си достаточно всё равно, что происходит (главное чтобы без выходов на чужую память, иначе тут уже система убьет процесс). Т.е. мы передаем указатель на ЧИСЛО (одно число) как будто это целый массив, дальше всё честно для него пишем. Код получается вот такой:

#include int main() < FILE *fp; //переменная файлового потока int value=11; //наша переменная с числом fp=fopen("output.txt","wb");//открываем файл на перезапись ('w') в бинарном режиме ('b' в "wb") if (fp==NULL)< //если файл не был открыт, то. perror("file hadn't opened");//вывести в поток ошибок сообщение (обычно это то же, что поток вывода (т.е. экран компьюетра) >else < //иначе.. fwrite(&value,sizeof(int),1,fp); //вывести значение как массив с единственной ячейкой >fclose(fp);//закрыть в любом случае (если fp==NULL, ошибкой всё равно не будет, а читается удобнее, чем все эти ветки if'ов return 0; >

2. Если про то, что в комментарии, т.е. с ноликами и единичками в файле. Это "ненастоящий" бинарный режим, т.к. каждый символ '0' и '1' - это правда честные отдельные символы, которые надо читать как текст. В этом случае, я думаю, Вы просто это число побитно обрабатываете и fputc()'ом загоняете (но fopen() будет уже таким: fopen("", "w"); (а не fopen("

Вывести число в двоичном виде

Author24 — интернет-сервис помощи студентам

Сложить двоичные числа и вывести ответ в двоичном и десятичном виде
Даны два неотрицательных числа в двоичной системе счисления. Необходимо сложить их и вывести ответ.

Вывести 1 байтовое целое число без знака в двоичном коде
1. вывести 1 байтовое целое число без знака в 2-ом коде а) с использованием операции деления, б) с.

Вывести число в двоичном виде
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 Есть число.

Число в двоичном виде в обратном порядке.
Дано натуральное число N. Выведите его представление в двоичном виде в обратном порядке.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *