请教变量数据在内存中的存储方式,比如int a=2,那么在内存中是怎么存储的呢
我的理解是开一小段内存存放a的ASCII码值,再开一段内存放数值2,但是我们打印a值的时候显示的是2,那么a和2所在的内存地址是存在什么样的联系呢我是非计算机专业的,正在...
我的理解是开一小段内存存放a的ASCII码值,再开一段内存放数值2,
但是我们打印a值的时候显示的是2,那么a和2所在的内存地址是存在什么样的联系呢
我是非计算机专业的,正在自学,感觉很迷糊,希望知道的指点下,谢谢 展开
但是我们打印a值的时候显示的是2,那么a和2所在的内存地址是存在什么样的联系呢
我是非计算机专业的,正在自学,感觉很迷糊,希望知道的指点下,谢谢 展开
5个回答
展开全部
额 你理解错了 。 跟本就不存在a的ASCII码值。
这样看:定义了一个变量,给它取个名字叫a,这个名字是给你程序员看的,计算机跟本不看这个a,a对计算机来说只是一个标识,它标识着在内存中所占用的一个大小为4B的内存空间,并且!这4B的空间存放一个整数,其值为2. 而在存储的时候是这样存的
由于内存的最小单位是字节,也就是1B是最小的单位,而一个int类型的数据在32的系统中要占用32位大小, 换算一个 8位=1字节 即8bit=1B 那么32位=4字节。 这个2转换成二进制数是10 ,但计算机要求用32位的数来存放这个2 ,咋办? 补0呗。在哪补? 肯定不能在后边补啊,那就变成别的数了—— 那,那就在前补。
所以是00000000 00000000 00000000 00000010
以上便是2这个数在计算机内存中的形式, 每8位一组分成4组刚好是4B大小,所以内存中就有连着的4个内存单元 来存放这个数值2. 而这一内存单元我们把它叫做a, 计算机也正是通过这个名字来标识这个数。
综上,总结一下,a这个字母是给程序员看的, 计算机不认识a这字母,a在计算机中仅仅是转换为一个计算机用于标识这个数值2的其它的什么东西。 具体是什么东西你不必要了解,其实我也不知道。而这个2在内存中存放的形式是占用4个内存单元的空间。
楼主想更深入了解这方面,建议把C语言学一遍后学学汇编语言就很清楚了
这样看:定义了一个变量,给它取个名字叫a,这个名字是给你程序员看的,计算机跟本不看这个a,a对计算机来说只是一个标识,它标识着在内存中所占用的一个大小为4B的内存空间,并且!这4B的空间存放一个整数,其值为2. 而在存储的时候是这样存的
由于内存的最小单位是字节,也就是1B是最小的单位,而一个int类型的数据在32的系统中要占用32位大小, 换算一个 8位=1字节 即8bit=1B 那么32位=4字节。 这个2转换成二进制数是10 ,但计算机要求用32位的数来存放这个2 ,咋办? 补0呗。在哪补? 肯定不能在后边补啊,那就变成别的数了—— 那,那就在前补。
所以是00000000 00000000 00000000 00000010
以上便是2这个数在计算机内存中的形式, 每8位一组分成4组刚好是4B大小,所以内存中就有连着的4个内存单元 来存放这个数值2. 而这一内存单元我们把它叫做a, 计算机也正是通过这个名字来标识这个数。
综上,总结一下,a这个字母是给程序员看的, 计算机不认识a这字母,a在计算机中仅仅是转换为一个计算机用于标识这个数值2的其它的什么东西。 具体是什么东西你不必要了解,其实我也不知道。而这个2在内存中存放的形式是占用4个内存单元的空间。
楼主想更深入了解这方面,建议把C语言学一遍后学学汇编语言就很清楚了
展开全部
在内存中用4个字节存储int型 用的是2进制 就是32个bit
输出字符2是程序做的转换 把整形的2转化为字符型的2输出 内存中并没有存放2的字符
输出字符2是程序做的转换 把整形的2转化为字符型的2输出 内存中并没有存放2的字符
更多追问追答
追问
请问其他语言是否也都这样,对某变量赋的值其实并不在内存中,只是在需要的时候,程序从代码中做了调用呢
追答
程序的内存分为代码空间(不变) 和运行空间(运行时会变化,保存了代码当前执行的位置,好像你放电影放到一段时间,那有个栈指针把这个地方记住)
2作为常数存在于代码空间 而变量存在于运行的内存空间 有个地址
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a的ascii码值不会存储, 系统编译之后所有的变量都存储到符号表中,并且每个表项被分配一个符号ID,一般也是数字的,可以根据该符号的ID直接访问符号的值
内存中的数据都是二进制的,没有ASCII值
ASCII只在为便于人的理解,对二进制的一种表示,也仅仅在显示时用
内存中的数据都是二进制的,没有ASCII值
ASCII只在为便于人的理解,对二进制的一种表示,也仅仅在显示时用
追问
那么变量的值是否如一楼所说的,是程序做的转换,其实内存中并没有存放呢
其他语言在调用变量的值的时候,也都是在代码那里找到变量的值么
追答
变量的值在内存中肯定要存储的,并且就放到符号表中的各项的内容中,但是是以二进制存储的
所谓转换,并不是程序转换的,是系统将二进制的内容以用户要求的格式输出,比如内存中存储了00000010这样一个二进制数,现在用户要求以%d,也就是整型输出,系统就输出2
所谓代码,在程序编译之后就不再存在什么代码了,都已经是指令, 编译之后所有变量都以二进制形式存储在符号表中,要使用时,直接通过符号ID,也可以说直接通过地址就可以找到了,没代码什么事情
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2这个数字的二进制补码方式,学c语言最前面都会接受的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
存放的是a的AS2码,机器语言
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询