关于计算机中小端法和大端法存储的一点总结
来源:互联网 发布:java数组为空和为null 编辑:程序博客网 时间:2024/05/29 12:48
把一个int类型的整数储存在计算机里,比如一个int类型的数,用16进制表示后,可以表示为0x01234567,刚好4个字节,在C语言中就把它取一个变量名为a,则假设&a=0x100处,那么它的地址范围是0x100~0x103,这里就出现了两种储存方法,有“大端法”和“小端法“,大端法是
大端法: 0x100 0x101 0x102 0x103
…….
01
23
45
67
……
小端法: 0x100 0x101 0x102 0x103
…
67
45
23
01
…
下面我用一个简单的C语言程序来演示一下,他妈的int类型的数是怎么存在我的计算机中的,
#include<stdio.h>
typedef unsignedchar * byte_pointer;
voidshow_bytes(byte_pointer start, int len)
{
int i;
for(i = 0; i < len; i++)
{
printf("%.2x ", start[i]);
}
printf("\n");
}
voidshow_int(int x)
{
show_bytes((byte_pointer) &x,sizeof(int));
}
voidshow_float(float x)
{
show_bytes((byte_pointer) &x,sizeof(float));
}
int main()
{
int a = 223;
float b = 20.59375f;
show_int(a);
show_float(b);
return 0;
}
这段代码在VC6.0的运行结果
然而在我计算机组成原理当中学过的float类型的小数在计算机中存储的形式是:
0 100 0001 1010 0100 1100 0000 0000 0000(B)=41 a4 c0 00(H)
从这里你看出你的计算机是通过大端法存储的还是小端法存储的啦。 很显然是小端法存储的。
以上是在linux中的gcc里面运行结果
其实在mac的机子的XCode上运行也是这个结果
通过上面那个程序你还能发现什么,还是计算机中数是怎么存储的,比如说一个int类型的数,int类型的数的最大值是2147483647,用十六进制表示的形式为:7f ff ff ff(h)
那么对于小端法存储的计算机则可以这么表示ff ff ff 7f,那么闭2147483647这个数大一的数是什么呢,是 -2147483648, 注意前面的负号,它在这种小端法存储的计算机中是这么存储的:80 00 00 00 ,而不是把这个-2147483648数先转化成十六进制,然后进行转化的。,只不过在前面2147483647的基础上加一而已(16进中的加一);
- 关于计算机中小端法和大端法存储的一点总结
- 计算机存储的大端法和小端法
- 计算机存储的大端法和小端法
- 计算机存储的大端小端问题
- 计算机中的大端存储小端存储的转换代码
- 计算机中小数的存储形式
- 计算机中整数和浮点数的表示和存储【大端小端的区别】
- 关于计算机黑客的一点总结
- ARM9的存储结构~~大端存储和小端存储
- 计算机大端和小端
- 一个简单程序思考计算机里int数据的存储问题,兼论大端模式和小端模式
- 关于大端和小端的起源
- 关于大端存储跟小端存储
- 大端存储和小端存储的区别
- 计算机的字节序“大端”和“小端”
- 计算机的大端模式和小端模式
- 计算机的大端模式和小端模式
- 大端和小端存储
- 【dp:LIS】hdu1025
- listview每一条中间有空隙问题解决
- Struts2的工作流程及原理
- printf(&unix["\021%six\012\0"], (unix)["have"] + "fun" - 0x60);
- 数组变集合 练习笔记
- 关于计算机中小端法和大端法存储的一点总结
- 【boost学习】之boost::bind
- 实现在mysql数据库中保存text大文本和blob大二进制数据
- UVA - 193 Graph Coloring
- 计算机网络课程设计--基于winpcap实现简单的抓包
- TimePickerDialog cancel button problem.
- HDU-4249-A Famous Equation(DP)
- 浅谈数据库索引
- 写一个程序,分析一个文本文件中各个词出现的频率,并且把频率最高的10个词打印出来。文本文件大约是30KB~300KB大小