1.C语言二进制数怎么写c语言中没有二进制的格式输出符号.
你可以用itoa函数很方便的将一个10进制int转变成二进制字符串.
如:
int i;
char s[128];
scanf("%d",&i);
itoa(i, s, 2); /*3个参数,第一个是待转换的数,第二个是存放转换后的字符串,第三个即需要转换的进制*/
printf("该数转换为二进制是: [%s]\n",s);
补充一点,itoa函数的头文件是stdlib.h
(你自己不查以前已经有的问题)
2.c语言二进制表示负数在计算机里一般用补码表示:
最高位是符号位,其余位为数字的原码取反+1
假设是8位机系统 (当然现在是32位或是64位机):
xxxx xxxx 1xxx xxxx x000 0001 合成之后:
1000 0001 则是-1的原码表达形式 。
接下来对取反(最高位符号位是保持不变):
1111 1110
再加一得到:
1111 1111 参考:
3.c语言如何读写二进制内容的写入分两种,a.字符 b.字节
前者可以写一些字符串,后者主要用来写入 视频,音频那些数据.
就像你用记事本打开 *.mp3文件一样会出现乱码 。
而如果你想写入字符串也出现乱码,则应该修改写入时的字符编码格式 。
有Unicode,utf-8,ansi,gbk等等 。而windows有自己默认的读取格式,所以当你写入的格式与默认格式不相同时就会出现用记事本打开时出现乱码了 。
另一种情况是在写入字符串之前对字符串进行加密 。
如果需要具体的例子,可以M我QQ
4.C中如何表示一个数是2进制数据在内存中以二进制补码形式存放!之所以用二进制存放是因为计算机容易识别二进制数,只有0和1表示,编码译码速度块,存取速度块 。
我们熟悉的10进制、8进制、16进制数,表示起来都不是很长,如十进制数20,表示成8进制是24,表示成16进制是14,而表示成二进数(最短的是八位)是00010100 。可见,二进制数书写起来比较困难,你想想,你想输入一个数值是20的数,你是想输20、24、14、00010100中的哪一个?显然,如果不是特殊的要求,我想我们都不会选择输入00010100吧 。
基于此,C语言没有给你提供输入二进制数的格式控制符,不像10进制、8进制、16进制一样有%d、%o、%x这样的输入控制符 。也就是说,你不能直接输入输出二进制数!
但是,C语言同样可以表示二进制数,因为数据在内存中都是以二进制数存储的,你想想,存都存的是二进制,还不能表示二进制数吗?只是数据的存储方式你看不到,但是假如你想看到一个数的二进制数,同样可以简单的实现 。
请看程序,它就是把num这个数输出成二进制形式:
#include<stdio.h>
#include <stdlib.h>
void main()
{
int num;
char str[33];
printf("请输入整数num: ");
scanf("%d",&num);
itoa(num,str,2);
printf("%d的二进制形式是%s\n",num,str);
}
5.用C语言编写二进制转换十进制的程序1、为了完成进制的转换,在主函数中声明了个函数Sum,主要用于将二进制的每一位转换为十进制后的数相加,返回值就是相加后的和 。另外定义了一个数组array[8],用于存放输入的八位二进制数 。
2、然后使用了一个for循环语句,用于输入八位二进制数 。在scanf函数里,在%d之间加了一个1,即%1d,这样是好连续的输入八个数,如果没有中间的1,则编译器会认为你只输入了一个数,即那个八位数 。然后使用printf函数输出,并且调用Sum函数,数组名作为实参 。
3、在Sum函数中,又声明了一个power函数,power函数的作用是求2的n次方,其实这里可以调用库函数pow,但是老师要求不调用库函数,因此就自己写了一个求2的n次方的函数,在这里n为指数,term为每一位数转换为十进制后的的数,如1*(2*2),sum为总和 。