㈠ c语言中一般整型化为二进制,长度怎么规定的比如int x=5;5化为二进制一般情况下是8位00000101,16位
整型是16位的,最大的整型数可用二进制表示为0111 1111 1111 1111。
而实际写的时候不一定要写十六位,比如说12转为二进制可写为0000 0000 0000 1100,也可以写成1100,左侧的0可以省略,这和十进制有点像:012和12是一样的,左侧的0不影响大小,写不写没关系。
int x=5;5转二进制可写为0000 0101,也可写为0000 0000 0000 0101,也可只写0101;都一样的。一般写的时候按方便简单的来。
㈡ int 最大值
int最大值是int的最大值是2147483647。
1、16位编译器说明:
int占16位。内存2字节。最大值:32767
2、32位和64位编译器:
int占32位。内存4字节。最大值:21474836473。
在32/64位系统中都是32位,范围为-2147483648~+2147483647。
决定int最大值的主要原因,根据编译器类型不同而变化。所以某些编写的程序,不能成功的在电脑中运行,多半与编译器有关系,可能并不是程序的原因。
一般程序的表达方式,最高位为符号位,位数为n位时,则最大值为2^(n-1)即2的n-1次幂。关于算法的问题,自然也要使用我们所学习的数学知识。
C/C++编程语言中,int表示整型变量,是一种数据类型,用于定义一个整型变量,在不同编译环境有不同的大小,不同编译运行环境大小不同。
在计算机里,对数字编码有3种方式:原码、补码、反码。原码其实就是10进制数直接转2进制数的结果。比如:十进制的18,在二进制里是10010。
那这里的10010就是原码。我们可以sizeof一下我们自己的电脑上int型占几个字节。我的是4个字节,也就是说只有32个位。如果一个十进制数转位二进制数位数大于32,就溢出,其实也就是存不下了。
存数不仅仅有正数还有负数,在计算机里如何区分正数负数?我们规定最高位是符号位。为0是正,为1负。所以最高位是不可以参加计算的。
比如二进制数1000最高位是符号位的话,转十进制不是8,而是-0,对就是负0(正0的二进制形式是0000)。如果给一个十进制形式的负数,如何计算它的补码?
1、计算这个数绝对值的二进制表示。
2、把2^n写成二进制形式减去这个数,得到的就是补码。
比如:-5,
1、5的二进制形式是:0101.最高位是符合位,为0是正。
2、1111-101,二进制的减法,补码就是1010.最高位是符合位,为1是负。
所以,int占32位的时候,最大可以赋值为:2147483647。也就是0x7fffffff。注意:7的二进制形式最高位为0,如果你对2147483647+1.输出的就是-2147483648。
这个数是负数中最大的数,也就是int型可以表示的最小的负数。它的十六进制表示为:0x8fffffff,8的二进制形式最高位是符号位,是1,为负。
㈢ c语言中采用二进制文件存储数据的问题
1、二进制文本使用fopen函数的二进制模式“rb”就可以打开。对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。 C语言里有一系列文件操作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。
2、fopen的函数原型:FILE * fopen(const char * path,const char * mode);
fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
3、例程:
#include <stdlib.h>
#include<stdio.h>
intmain()
{
FILE*fpPhoto,*fpText,*fpTarget;
intiRead;
charszBuf[100];
printf("请输入第一个文件名(jpg): ");
gets(szBuf);
fpPhoto=fopen(szBuf,"rb");
printf("请输入第二个文件名(txt): ");
gets(szBuf);
fpText=fopen(szBuf,"rb");
printf("请输入目的文件名(jpg): ");
gets(szBuf);
fpTarget=fopen(szBuf,"wb");
if(!fpPhoto||!fpText||!fpTarget)
{
printf("打开文件失败! ");
system("pause");
return-1;
}
while((iRead=fread(szBuf,1,sizeof(szBuf),fpPhoto))>0)
fwrite(szBuf,1,iRead,fpTarget);
while((iRead=fread(szBuf,1,sizeof(szBuf),fpText))>0)
fwrite(szBuf,1,iRead,fpTarget);
fclose(fpPhoto);
fclose(fpText);
fclose(fpTarget);
return0;
}