判断数字1在计算机中的存储方式
2015-11-22 21:10
232 查看
题目:
编写一个小程序,检验数字1在计算机中的存储方式是大端字节序、还是小端字节序。
题目分析:
数字1在计算机中可能有两种的存储方式,大端存储和小端存储。下面先介绍大端字节序和小端字节序。
1:原码为:00 00 00 01
第一种存储方式:00 00 00 01(——>由低到高 大端有序列)
第二种存储方式:01 00 00 00(——>由低到高 小端有序列)
具体实现思想:
(1)将存储数字1的空间地址进行强制类型转换为char *,并且赋值给字符指针*p,则对int类型的第一个字节进行判断,如果*p = 1,则为小端字节序的存储方式,否则,为大端字节序的存储方式。
下面为具体的程序:
(2)利用共用体的特点解决,定义一个共用体union,
union UN
{
int i;
char c;
}
变量i和c的地址是相同的,并且存储的空间大小为取决于里面定义类型大小中最大的,则存储的空间大小占4个字节。但是利用共用体必须在同一时间只能访问一个变量。
下面是具体的程序:
编写一个小程序,检验数字1在计算机中的存储方式是大端字节序、还是小端字节序。
题目分析:
数字1在计算机中可能有两种的存储方式,大端存储和小端存储。下面先介绍大端字节序和小端字节序。
1:原码为:00 00 00 01
第一种存储方式:00 00 00 01(——>由低到高 大端有序列)
第二种存储方式:01 00 00 00(——>由低到高 小端有序列)
具体实现思想:
(1)将存储数字1的空间地址进行强制类型转换为char *,并且赋值给字符指针*p,则对int类型的第一个字节进行判断,如果*p = 1,则为小端字节序的存储方式,否则,为大端字节序的存储方式。
下面为具体的程序:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> int fun(void) //判断数字1存储方式为小端还是大端 { int num = 1; char *p = (char *)# //将数字1的地址进行强制类型转换 if(1 == *p) //先出现1的位小端字节序 { return 1; } else { return 0; } } int main() { int ret = fun(); if(1 == ret) { printf("little!"); //小端字节序 } else { printf("big!"); //大端字节序 } system("pause"); return 0; }
(2)利用共用体的特点解决,定义一个共用体union,
union UN
{
int i;
char c;
}
变量i和c的地址是相同的,并且存储的空间大小为取决于里面定义类型大小中最大的,则存储的空间大小占4个字节。但是利用共用体必须在同一时间只能访问一个变量。
下面是具体的程序:
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> union UN //定义一个共用体 { int i; char c; }; int fun(void) { union UN un = {0}; //声明un,对其初始化 un.i = 1; if (1 == un.c) { return 1; } else { return 0; } } int main() { int ret = fun(); if (1 == ret) { printf("little!"); } else { printf("big!"); } system("pause"); return 0; }
相关文章推荐
- C++基础入门教程(三):数组、字符串、结构体、共用体
- 共用体的定义与应用详细解析
- C++中共用体的定义与应用总结
- 从Java到C++——union的用法
- 从Java到C++——从union到VARIANT与CComVariant的深层剖析
- 从Java到C++——union的用法
- 从Java到C++——从union到VARIANT与CComVariant的深层剖析
- 联合体中不能出现结构体
- ORACLE 函数minus、intersect、union、union all 用法
- 4.10练练手
- 大端模式和小端模式
- union共用体
- 共用体(联合体)简介及在大小端判断的巧妙运用
- Union 共用体
- 结构体与共用体
- c语言复杂数据类型
- union共用体及其实例分析
- 标准C程序设计(五)
- 共用体问题
- 判断机器的大小端模式