鱼C论坛

 找回密码
 立即注册
查看: 2025|回复: 17

[已解决]判断大尾端小尾端

[复制链接]
发表于 2018-10-14 19:41:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

int main()

{

    int tt = 1;

    char *c = (char*)(&tt);

    if(*c == 1)

    {

        printf("litte endian\n");

    }

    else

    {

        printf("big endian\n");

    }

    return 0;

}


最佳答案
2018-10-14 21:38:11
本帖最后由 claws0n 于 2018-10-14 21:44 编辑
大可爱 发表于 2018-10-14 21:24
我的电脑是intel 机器,小尾端 这是定的了。
小尾端 低位有效字节存在低地址,高位有效字节存在高地 ...


昨天的不清楚??你的 printf() 是怎么学的??
a.s[0] = 34
a.s[1] = 12
[ 高 | 低 ] //写反了,哈哈

补:
12 34
高 低
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-14 20:03:10 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-14 21:24:03 | 显示全部楼层
本帖最后由 大可爱 于 2018-10-14 21:26 编辑

#include<stdio.h>
int main()
{
        union
        {
                char s[2];
                short int i;
        } a;
        a.i = 0x1234;
        printf("%x,%x\n",a.s[0],a.s[1]);
}
我的电脑是intel 机器,小尾端 这是定的了。
小尾端 低位有效字节存在低地址,高位有效字节存在高地址
对于1234这个数字,那么34 存在低地址,12 存在高地址
然后输出的时候,printf ,即先输出  a.s[0]  即34   然后输出  a.s[1] 即12
这样的解释对吗

捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 21:38:11 | 显示全部楼层    本楼为最佳答案   
本帖最后由 claws0n 于 2018-10-14 21:44 编辑
大可爱 发表于 2018-10-14 21:24
我的电脑是intel 机器,小尾端 这是定的了。
小尾端 低位有效字节存在低地址,高位有效字节存在高地 ...


昨天的不清楚??你的 printf() 是怎么学的??
a.s[0] = 34
a.s[1] = 12
[ 高 | 低 ] //写反了,哈哈

补:
12 34
高 低
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 21:57:09 | 显示全部楼层
大可爱 发表于 2018-10-14 21:24
我的电脑是intel 机器,小尾端 这是定的了。
小尾端 低位有效字节存在低地址,高位有效字节存在高地 ...

你的机器是 little Endian,所以低位在前面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-14 22:06:29 | 显示全部楼层
claws0n 发表于 2018-10-14 21:57
你的机器是 little Endian,所以低位在前面

低字节  是不是就是      低位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 22:11:19 | 显示全部楼层
大可爱 发表于 2018-10-14 22:06
低字节  是不是就是      低位

嗯,不是很标准,哈哈,站在地址的角度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-14 22:36:24 | 显示全部楼层
claws0n 发表于 2018-10-14 22:11
嗯,不是很标准,哈哈,站在地址的角度

一个字节最大255,
16进制的 034 也放得下,为什么不是 034 而是 34
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 22:53:22 | 显示全部楼层
大可爱 发表于 2018-10-14 22:36
一个字节最大255,
16进制的 034 也放得下,为什么不是 034 而是 34

16 进制最大是 FF,34 简直是小菜一碟
话说 typedef 怎么样了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 22:56:04 | 显示全部楼层
定义
        大尾端:高位在低地址。
        小尾端:低位在低地址。

在内存地址0的位置有一个4字节的变量,保存着0x12345678
小尾端
0 -> 78
1 -> 56
2 -> 34
3 -> 12
大尾端
0 -> 12
1 -> 34
2 -> 56
3 -> 78
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-14 23:00:04 | 显示全部楼层
人造人 发表于 2018-10-14 22:56
在内存地址0的位置有一个4字节的变量,保存着0x12345678

这个我理解,我就是 不懂 输出的时候  非要  输出
34
12
而不是
034
1
这种情况下,两个两个放这个是不是默认的,定义的。还是怎么回事。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-14 23:06:34 | 显示全部楼层
claws0n 发表于 2018-10-14 22:53
16 进制最大是 FF,34 简直是小菜一碟
话说 typedef 怎么样了?

人造人 说的这句话
(*P_Max)(int *, int *)是一个int *
*(*P_Max)(int *, int *)是一个int
我觉得是对的

我就是觉得typedef int *INTEGER     就是将  *INTEGER 整体作为  int
我的理解就是   &(int) == INTEGER
所以  INTEGER  是  一个数据类型 为 指向整形指针 型数据

这样理解对吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 23:10:06 | 显示全部楼层
大可爱 发表于 2018-10-14 23:00
这个我理解,我就是 不懂 输出的时候  非要  输出
34
12

跟硬体有关吧,都是 8 位为一个单元的,先不管,之后看汇编
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 23:10:33 | 显示全部楼层
大可爱 发表于 2018-10-14 23:06
人造人 说的这句话
(*P_Max)(int *, int *)是一个int *
*(*P_Max)(int *, int *)是一个int

到该帖子里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 23:10:53 | 显示全部楼层
大可爱 发表于 2018-10-14 23:00
这个我理解,我就是 不懂 输出的时候  非要  输出
34
12
0x12345678 = 00010010 00110100 01010110 01111000

小尾端
0 -> 01111000        78
1 -> 01010110        56
2 -> 00110100        34
3 -> 00010010        12
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 23:14:37 | 显示全部楼层
0x1034 = 00010000 00110100

0 -> 00110100        34
1 -> 00010000        10

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
大可爱 + 5 + 5 + 3 用事实说话

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 23:17:18 | 显示全部楼层
0x1034需要两个字节内存空间来存放
0x1034需要16bit内存空间来存放

低8位存放在低地址,高8位存放在高地址

0x1034 = 00010000 00110100
高8位是00010000
低8位是00110100

0 -> 00110100        34
1 -> 00010000        10

有什么问题吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-14 23:20:34 | 显示全部楼层
大可爱 发表于 2018-10-14 23:06
人造人 说的这句话
(*P_Max)(int *, int *)是一个int *
*(*P_Max)(int *, int *)是一个int

(*P_Max)(int *, int *)是一个int *
*(*P_Max)(int *, int *)是一个int

我说这个是错的,下面还加了3个问号
仔细体会我的语义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-30 13:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表