⑴ c语言如何定义二进制变量
C语言中没有 “二进制变量”这一说法!
C语言中的数据基本类型包括:char short int long float double . 用哪种类型定义的就叫XX类型变量,如字符型变量,整型变量,浮点型变量。
各种变量中存储的数据,都是以二进制进行存储的。因类型的不同,采用的二进制编译格式不同。如:整形类都是用补码存储,浮点型采用IEEE754标准存储。
对于int a=0x1A ; int b=0101 ;这种变量初始化中,a,b依然是整形变量,0x1A这种以0x开头的数据表示16进制常数(或称常量),0101这种以0开头的数字表示8进制常数。但程序设计中并没有规定二进制常数的表示形式,如果需要使用的话,可以采用字符数组来存储二进制数,如:
char a[100] = "10100101" ;
需要运算时,再通过自定义函数将字符串转换成整数。
⑵ c语言中有关二进制,ascii码和内存的问题
电脑中存储都是二进制,或者说,以字节来论的话,是16进制数。
键盘输入后,被操作系统转成输入字符的ASCII码值,放在缓冲区中。(这也是16进制的哦)
你的程序中给变量输入值,全是输入函数做的。
scanf("%c",&a[0]); 它就把缓冲区中的值直接放入a[0]中
scanf("%d",&b); 它就把缓冲区中的几个值 转换合成一个整型值给b
比如 输入 12 缓冲区中是 0x31 0x32 函数把 0x31 00x32转换成 0x0c 给 变量b
别的输入类型也是一样,相应的转换。
别看存储的是 0x0c给 b 你输出时 printf("%d",b) 输出会是 12
输出的是10进制数,这全是函数做的,实际存储都是16进制的。或者说是二进制的。
ASCII码表,只是 字符 与 数值 的对应关系表,并不是说ASCII码是10进制数。
是以数的大小来说的。不在于是几进制。比如字符 '0' ASCII码是 48 也是0x30 只是进制不同,大小 48跟 0x30是相等的。
⑶ c/c++中, 变量的存储问题
在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。
要点:
堆:顺序随意
栈:先进后出
堆和栈的区别
一、预备知识—程序的内存分配
一个由c/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放
5、程序代码区—存放函数体的二进制代码。
⑷ C++中如何表示2进制,8进制,16进制变量
c语言中变量存储数据实际上是按照2进制方式保存的,只是编程和输入输出时才将十进制数翻译成二进制,或者翻译成十进制来显示
c语言编程中不使用二进制常量,八进制数用0开头,十六进制数用0x开头,比如
int a;
a=0x1234; //十六进制数据赋值
a=037; //八进制数赋值
a=37; //十进制数赋值
⑸ 内存中都是二进制存储的,那计算机怎么分清楚哪个是字符,哪个是其他数据类型呢,就是字符的编码和整型的
内存中是不存放数据的,CPU发送指令调用所需数据时已经确定了数据的类型,如字符、声音或视频,数据由硬盘中调出,放入到内存暂存,根据处理速度来分批进行处理,这是表现层的展现,数据在展现时运用16进制代码,进行换算变化成为能够让计算机识别的2进制代码,所以,所处理的2进制数据已经在起始阶段就确定了其类型。
⑹ C语言的任何类型数据在计算机内部都是以二进制形式存储的
很正确,c语言做为基础应该学吧。反正你明白所有的东西包括程序,代码,变量各种东西都是二进制,他们在内存里面。
⑺ 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;
}
⑻ 变量如何存储在内存中
是以其二进制补码存储的,根据变量的数据类型来分配内存空间,如整形变量1它的存储形式就是00000000
00000001
⑼ 多种变量值在计算机储存的二进制格式
计算机中,负数的存储一般是以补码方式,即取反加一。5的二进制是101,即00000101,取反是11111010,加一是11111011。至于浮点数,还要考虑长浮点或短浮点,也就是用16位二进制或32位二进制来表示。