变量的存储深入
来源:互联网 发布:云免数据库怎么登陆 编辑:程序博客网 时间:2024/04/30 01:57
变量值的存储
变量被定义以后,系统在运行时会为该变量分配一个相应大小的存储空间,称为存储单元。
给变量赋值后,该变量对应的存储单元中会存放该值,这个值称为变量的值。
那么变量的值在变量的存储单元中是如何表示的呢?
(1)整数是以补码的形式存放的。
(正数的补码是其本身,负数的补码为原码按位取反加1)
如:int a=2, b; b= -2; (这里int是2个字节)
a 00000000 00000010
b 11111111 11111110
2的原码表示:00000000 00000010
-2的补码表示:11111111 11111101+1=11111111 11111110
(2)特殊情况:最大、最小和0的存储
最大值:2^15-1(32767):
最小值:-2^15 (-32768)
1000000000000000169~151~80的存储如下:
0
0000000
00000000
16
9~15
1~8
(3)超出范围的情况(溢出)
①、阅读下面的程序段,程序段的输出结果是()
int i=65536; printf(“%d”, i );
A)65536 B)0 C)有语法错误,无输出结果 D)1 说明:65536=216,即:1 00000000 00000000,第17位上为1,后面16位均为0。存储时只能存放16位,即16个0。故结果为0。
②、若有下面的程序段,则输出结果为()
int a=32768; printf(“%d”, a);
说明:32768=215,即 10000000 00000000,第16位上为1,后面15位均为0。存储时只能存放16位,最高位为1,故结果为-32768。
③、若有下面的程序段,则输出结果为()
int a=65549; printf(“%d”,a); 已知65549=1 00000000 00001101B (13)
int b=131069; printf(“%d”,a); 已知131069=1 11111111 11111101B (-3)
题目:在32位计算机里
int a = -65536;short b = a;a = b;a=?
在int存储中 -65536 = 10000000 00000000 00000000 00000000
所以short只取int后面两个字节。
a=0
如a=65533
则a = 00000000 00000000 11111111 11111101
b是有符号的short = 11111111 11111101 = -3(-3在计算机的存储形式是补码00000000 00000011)
- 变量的存储深入
- 深入理解C++中变量的存储类别和属性
- 深入理解C++中变量的存储类别和属性
- DS计划C深入学习项目:【总结】【变量】变量的存储域
- 1.深入PHP变量存储结构
- 变量的存储类型
- 变量的存储类型
- 变量的存储布局
- 变量的存储域
- 变量的存储布局
- 变量的存储类别
- 变量的存储类别
- 变量的存储
- 变量的存储类别
- 变量的存储布局
- 变量的存储区
- 变量的存储类别
- C51变量的存储
- 利用递归绑定DevExpress.XtratreeList.TreeList数据
- Using Functions after the Pipeline
- /proc/devices 与 /dev 区别
- linux 处理设备号需要注意的问题
- Ordr.in:整合型的餐厅预定服务
- 变量的存储深入
- WinCE上BINFS实现详解
- DevExpress TreeList使用心得
- Windows Phone 7 开发 31 日谈
- DM355自动以root登录的方法
- java流操作
- struts2环境配置
- VOA学习中的一些经验和体会
- varchar和Nvarchar区别