精华内容
下载资源
问答
  • C语言整数转二进制字符串代码,
    2021-05-19 07:59:27

    C语言标准库没有整数转二进制字符串函数,随手写一个:

    #include "stdio.h"

    #include

    #include

    static const char* LIST[16] = {

    "0000", "0001", "0010","0011", "0100", "0101", "0110","0111",

    "1000", "1001", "1010","1011", "1100", "1101", "1110","1111"

    };

    const char* getBinaryStringByIndex(const int index){

    if(index<0 || index>15){

    return NULL;

    }

    return LIST[index];

    }

    void printBinaryNumber(const int num, char* out){

    int group = sizeof(num) * 8 / 4;

    int i;

    for(i=0; i

    int index = (num >> (group-i-1)*4) & 0x0f;

    const char* groupResult = getBinaryStringByIndex(index);

    strcpy(out+i*4, groupResult);

    }

    }

    int main(){

    int a = 1997;

    int len = sizeof(a)*8;

    char* result = (char*) calloc(len+1, 1);

    if(!result){

    printf("alloc memory failed");

    return -1;

    }

    printBinaryNumber(1997, result);

    printf("result: %s", result);

    free(result);

    return 0;

    }

    输出如下:

    更多相关内容
  • C语言文件二进制取反

    2018-11-20 03:09:00
    C语言文件二进制取反。使用fread和fwrite。可以处理任意文件。
  • C语言printf打印没有提供二进制格式化输出转换说明,需要自定义实现输出二进制数格式,实现的算法主要是使用移位操作符,使用&与位操作,将1与各位比较提取各位出来,具体的实现算法如下:void print_bin(int ...

    C语言printf如何输出二进制数格式?如何将十进制数按二进制数输出?C语言printf二进制输出字符的格式是什么?C语言可以二进制输出吗?

    C语言printf打印没有提供二进制格式化输出转换说明,需要自定义实现输出二进制数格式,实现的算法主要是使用移位操作符,使用&与位操作,将1与各位比较提取各位出来,具体的实现算法如下:

    void print_bin(int number);

    void print_bin_simple(int number);

    int main(void){

    int number = 0xAF01BC;

    print_bin(number); // 完全位二进制数格式输出

    print_bin_simple(number); // 去掉前面无效0二进制数格式输出

    return 0;

    }

    /*

    * 二进制数格式输出,输出所有位

    * 6bit

    * 011010

    * 100000 1<<5

    * &

    * */

    void print_bin(int number){

    int bit = sizeof(int)*8;

    int i;

    for(i = bit - 1;i >= 0;i--){

    int bin = (number & (1 << i)) >> i;

    printf("%d", bin);

    }

    printf("\n");

    }

    // 二进制数格式输出,输出有效位,过滤掉前面的0位

    void print_bin_simple(int number){

    int bit = sizeof(int)*8;

    int i;

    int status = 0;

    for(i = bit - 1;i >= 0;i--){

    int bin = (number & (1 << i)) >> i;

    if(bin == 1)

    status = 1;

    if(status == 1)

    printf("%d", bin);

    }

    printf("\n");

    }

    展开全文
  • 在我们日常的编程中,有时候需要格式化输出一个整形数据的二进制,但是在我们C语言中只有输出十进制:%d;输出十六进制:%x;输出单个字符:%c;输出字符串:%s,输出变量所在的地址:%p。而并没有这种二进制对应的...

    1.前言

    在我们日常的编程中,有时候需要格式化输出一个整形数据的二进制,但是在我们C语言中只有
    输出十进制:%d
    输出十六进制:%x
    输出单个字符:%c
    输出字符串:%s
    输出变量所在的地址:%p
    而并没有这种二进制对应的格式,所以需要我们手动来实现。

    2.源码实现

    本篇博客给大家介绍两种方法:
    1.通过库函数itoa,需要包含头文件:#include <stdlib.h>;
    2.通过十进制转成二进制的常用方法——短除法;
    为方便大家使用,将两种方法都封装成了函数,源码如下:

    #include <stdio.h>
    #include <stdlib.h>
    
    #define uint32 unsigned int
    #define uint8 unsigned char
    
    void FuncOutputBin(uint32 value)
    {
    	char string[33];   //形参类型uint32最大为32位,因此我这里定义了大小为33的字符串数组存放
    	itoa(value, string, 2);  
    	printf("库函数得到的二进制为:%s\r\n",string);
    }
    
    //用短除法的思想得到二进制,之后将数据从后往前读取 
    void ShortDivOutputBin(uint32 input)
    {
    	uint8 temp[33] = {0};  
    	int i = 0;
    	printf("短除法得到的二进制为:");
    	while(input)
    	{
    		temp[i] = input % 2;	//取余数存放到数组中,此为得到的二进制数
    		input = (uint32)input / 2;  //短除,while中判断是否除尽
    		i++;  //存储了一个二进制数,自加存储下一个
    	}
    	for(i--; i>=0; i--)  //由于最后一次input为0无效,i还是自加了,因此最后一次自加的值是无用的,所以先自减,然后将余数从后往前读取
        {
    		printf("%d",temp[i]);
    	}
    	printf("\r\n");
    }
    
    void main(void)
    {
    	uint32 input = 0;
    	printf("请输入一个需要转化为2进制的整形数据:");
    	scanf("%d", &input); 
    	FuncOutputBin(input);
    	ShortDivOutputBin(input);	
    } 
    

    itoa函数原型:char *itoa( int value, char *string,int radix)
    功能:将整形数据value转化成需要的进制radix,然后将之以字符串的形式存放在string中;
    返回值:转化成对应进制后的字符串的地址,也可以不使用返回值;
    它的三个参数依次为:
    value:需要转化的整形数据;
    string:转化成对应进制后的字符串的地址;
    radix :需要转化的进制(我这里需要转化为2进制,所以填2);

    3.结果展示

    (有图有真相咯~)
    在这里插入图片描述
    放在最后,喜欢作者的欢迎关注我们的公众号"脑补空间”,会为大家推送更多推文~
    在这里插入图片描述

    展开全文
  • 把输入的二进制数按照从低到高的次序依次输出,且每一次都乘以相应的位权 //(所谓位权,数中每一固定位置对应的单位值称为位权。例如十进制第一位位权为0,第2位的位权为10,第3位的位权为100;而二进制第一位位...

    <思路>

    把输入的二进制数按照从低到高的次序依次输出,且每一次都乘以相应的位权

    //(所谓位权数中每一固定位置对应的单位值称为位权。例如十进制第一位位权为0,第2位的位权为10,第3位的位权为100;而二进制第一位位权为0,第2位的位权为2,第3位的位权为4,第四位位权为8;对于 N进数,整数部分第 i位的位权为N^(i-1),而小数部分第j位的位权为N^-j。


    举个例子:【将二进制数1101转化成十进制数】

    1101=1*2的零次幂+0*2的一次幂+1*2的二次幂+1*2的三次幂

    注:从最低位开始计算(最右边计算最低位),依次往左边的高位计算再累加。


    ①首先完成从低到高的次序输出:即每一次输出都应该从二进制数的最低位(最右边的数输出)

    方法是:n%10;

    ②每一次都乘以相对应的位权:由于二进制的位权是以二次幂往上增加,所以每一次都应该将所求得的最后一位乘以对应的位权2;

    ③由于是从低位到高位依次输出该二进制数n,所以数字应该往前移动

    方法是:n/10;

    看下面的程序吧!

    #include<stdio.h>
    void main()
    {   int n,sum=0,p=1          //n为二进制数,sum为每一位计算所加的和,p为位权
        scanf("%d",&n);          //输入该二进制数
        while(n)               //循环条件为n,即二进制数n在不为0的时候程序一直成立
         { sum+=(n%10)*p;       //数字中所有位乘以本位的位权再加和
           p*=2;                //位权随着位的变化依次增加
           n/=10; }             //进行下一位的输出
    
    printf("%d\n",sum);
    
    }

    展开全文
  • C语言二进制字符串与十六进制字符串相互转化,利用MFC框架生成小工具。
  • printf("要输入几组二进制数?\nnGroup="); scanf("%d",&n); if(!(pBin=(char (*)[1001])malloc(n*1001))){ printf("申请内存失败!\n"); exit(0); } for(ii=0;ii printf("请输入第%d个二进制数!\nBin%d=",ii+1,ii+1)...
  • 如何用C语言输出二进制数据

    千次阅读 2021-05-19 16:24:53
    如果要输出5261二进制数printf输出格式 二进制,可以使用函数4102将其转换为二进制字符串,然后在1653中输出.itoa函数原型: char * itoa(intvalue,char * stringprintf输出格式 二进制,intradix);参数: int值转换...
  • c语言二进制十进制十六进制之间的转化(详解)
  • 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例 1: 输入: a = “11”, b = “1” 输出: “100” 示例 2: 输入: a = “1010”, b = “1011” 输出: “10101” ...
  • C语言实现字符串转二进制编码一、代码实现(不涉及保存)终端打印二、代码实现,转化后二进制的保存成.txt文件 一、代码实现(不涉及保存)终端打印 #include <stdio.h> #include <string.h> //字符串...
  • 拉莫斯之舞打开方式用二进制方式打开,如 FILE *fp = fopen("a.zip","rb+");然后读用fread去读。1、对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。2、C语言里有一系列文件操作函数。区分...
  • C语言某个程序当中需要把文本16进制转换成对应的16进制数,比如字符串"0x1a"转换成10进制的26,可以用以下函数来实现相关函数: atof, atoi, atol, strtod, strtoul表头文件: #include 定义函数: long int strtol...
  • 本程序要自己创建个文本格式的输入文件a1.txt,编译后能将文本文件前255字节以内的字符转换成相应的AscII码值的二进制表示,并存入输出文件a2.txt中。然后再将二进制文件还原并存入a3.txt文件。 具体代码如下: #...
  • C语言中的二进制、八进制和十六进制的表示

    万次阅读 多人点赞 2020-02-18 17:21:04
    但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种特殊的写法,具体来说,就是在数字前面加上特定的字符,也就是加前缀。 1 . 二进制 二进制由 0 和 1 两个数字组成...
  • C语言实现二进制转换十进制

    热门讨论 2010-10-26 17:15:43
    一个用C语言实现二进制转十进制的方法,有详细代码说明与源代码,可以直接COPY运行。
  • c语言中十六进制转为二进制

    千次阅读 2021-05-19 19:26:46
    本文概述什么是十六进制?十六进制是一种位置系统,以16为基数表示十六个不同的符号中的数字。这些不同的符号,即“ 0-9”代表从零到九的值,...十六进制数= A12C相当于A的二进制值是1010等于1的二进制值是0001等于...
  • c语言二进制怎么转换十进制

    千次阅读 2021-05-23 06:40:24
    c语言二进制怎么转换十进制?按照如下步骤即可用C语言二进制数转换成十进制数的程序:推荐:《C语言教程》1、首先在主函数中设置成函数Sum,另外定义了一个数组array[8],用于存放输入的八位二进制数。2、然后使用...
  • C语言正负整数的二进制表示及二进制输出格式C语言正负整数的二进制表示及二进制输出格式讲C 语言数据类型时,讲到整数是在计算机的存储单元中按整数的补码形式存放的,这是学生很难理解补码是什么。其实正整数的补码...
  • 文章目录1、自定义的二进制输出函数dectobin2、获取视频教程3、版权声明C语言中,整数都是以二进制的形式存放在内存中,所谓的二进制、八进制、十进制和十六进制只是输出显示方式的不同。下表是各种进制整数的输出...
  • C语言中的整数除了可以使用十进制,还可以使用二进制、八进制和十六进制。二进制数、八进制数和十六进制数的表示一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制...
  • C语言二进制换十进制(简单)

    千次阅读 2021-11-16 19:06:27
    做题思路:先确定二进制数长度,注意输入完成后的回车要用getchar()函数给吃掉,之后初始化为0一个数,先让其乘二,再让二进制数的每一位与'0'做差并加入其中,最后输出。 #include<stdio.h> int main...
  • c语言二进制转十进制详解

    千次阅读 2021-12-18 15:27:18
    数字字符‘1’的ASCII代码是十进制数49,二进制形式是0110001。其中我们需要知道的是‘1’和1是不同的概念。字符‘1’只是表示一个形状为‘1’的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占一个字节...
  • 查找了比较多的资源, 发现没有办法把text 文件转成binary文件 仅作为记录,不过这个例子可以去除换行符。#include #include #define... 二进制文件读取 参考 原文:http://matrix6ro.blog.51cto.com/1746429/1943718
  • C语言标准中,整数可以直接使用八进制、十进制、十六进制三种表示,二进制标准没有支持,但是部分编译器提供支持。 进制的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一...
  • DEC十进制转换为BIN二进制 BIN二进制 0 1 除2取余,倒序排列,高位补零 例如:14 14%2=0 14/2=7 7%2=1 7/2=3 3%2=1 3/2=1 1%2=1 1/2=0 倒序排序:则14=1110 #include<stdio.h> #include<math.h> #...
  • 整数是我们生活中常用的数据类型,也是编程中常用的一种数据,C语言用int关键字来定义整数变量(int 是 integer 的简写)。在定义变量的时候,可以加signed、unsigned、short和long四种修饰符。signed:有符号的,可以...
  • 格雷码,又叫循环二进制码或反射二进制码,格雷码是我们在工程中常会遇到的一种编码方式,它的基本的特点就是任意两个相邻的代码只有一位二进制数不同。 格雷码的基本特点就是任意两个相邻的代码只有一位二进制数...
  • #include <stdio.h> #include <string.h> #include <limits.h> #include <stdlib.h>...const static int LONG_BIT_COUNT = CHAR_BIT * sizeof(long);... * 二进制转数值 */ long n = 0; for
  • C标准没有输出二进制的,不过用itoa()可以实现到二进的转换2. 可以使用itoa函数把变量的数值转换成2进制字符串,再用输出函数输出。3. 用 法:char *itoa(int value, char *string, int radix);4. 详细解释:itoa是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 133,617
精华内容 53,446
关键字:

c语言格式字符二进制