从计算机端序说起

一. 故事背景

1.最近在学习网络知识,自然免不了端序问题的探索;
2.在数据组织的过程中,遇到了端序问题的困扰;
3.具体问题是在,最开始我只是想单纯测试我计算机当前的端序。

二.故事开始

对于端序测试,其实就是看数据在内存中的存储方式,这句话比较笼统,大概是这个意思:

大端模式:数据的高位存储在内存的低字节。ARM/PowerPC等处理器采用大端模式
小端模式:数据的低位存储在内存的低字节。Intel架构处理器采用小端模式。

以下是我当时做的一些笔记:
在这里插入图片描述

是的,网络采用的是大端字节序

而不必担心,主机字节序与网络字节序的相互转换,系统是有提供相应函数的:
h代表host;n代表net

#include<netinet/in.h>
unsigned long int htonl(unsigned long int hostlong);
unsigned short int htons(unsigned short int hostshort);
unsigned long int ntohl(unsigned long int netlong);
unsigned short int ntohs(unsigned short int netshort);

而为什么会有端序的区分呢?

首先,大小端序是由CPU决定的(网络字节序是固定的哦)
其次,谁好谁坏是没有确切定论的,这是最早设计者们的选择,一篇知乎的文章挺有意思,大概解释了端序问题:https://www.zhihu.com/question/275738523/answer/382407340

三.故事继续

搞清楚概念,开始实践了----测测我的window下的端序,Linux下的端序。
是的,这是个很简单的基础,一个联合数据类型,或者一个int转char就可以搞定了。
(惭愧地报告一番,我竟然在联合数据类型上栽了个跟头,唉…)

那我们来浅谈一番Union

在这里插入图片描述

而我栽就栽在我忘了union的成员都是相对于其union的内存分配的基地址(首地址)开始计算的,所以我一开始测,总发现和结论是反的(再次手动捂脸)。

所以,最终上一个简单的端序测试代码

#include <stdio.h>

int main()
{
    union
    {
        int nNum;
        char cNum;
    }unionChk;

    unionChk.nNum = 1;

    if(unionChk.cNum == 1)
    {
        printf("Little Endian\n");
    }
    else if(unionChk.cNum == 0)
    {
        printf("Big Endian\n");
    }
    
    printf("========== Check it Again ========== \n");

    int nBuf = 0x11223344;
    if((char)nBuf == 0x11)
    {
        printf("Big Endian\n");
    }
    else if((char)nBuf == 0x44)
    {
        printf("Little Endian\n");
    }
}

四.故事结束

好啦,端序概念是很基础的知识,总结至此,还有很多基础知识需要夯实,持续进步,保持学习技术的初心。

推荐一本经典书籍:
《UNIX编程艺术》,读得懂,但并不代表能理解,真所谓此中有深意…

不足望指正,互相交流,共同进步

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 计算机渲染(Computer Graphics)是计算机图形学的一个分支,致力于生成图像的过程。它的历史可以追溯到上个世纪50年代,当时的计算机图形主要用于科学计算和工程设计。随着计算机科技的发展,计算机渲染也在不断演进,从最初的2D图像逐渐发展到如今的3D图像。计算机渲染的主要用途是创建真实感的图像,包括电影特效、游戏视觉效果、建筑设计可视化等。计算机渲染技术的发展极大地丰富了我们的视觉世界,让我们能够以前所未有的方式来欣赏和体验世界的美。 ### 回答2: 计算机渲染是一项将三维模型转化为视觉图像的过程,通过对光照、材质、纹理和相机视角等因素进行计算和模拟,使得虚拟场景能够逼真地呈现在屏幕上。随着计算机技术的发展,计算机渲染已经成为了现代电影、游戏和动画制作等领域不可或缺的重要技术。 计算机渲染的引言可以从计算机图形学的历史和发展说起。早期的计算机图形学是基于线框模型和简单的填充算法,图像质量较低且缺乏真实感。随着硬件设备的提升和计算能力的增强,渲染技术得到了长足的发展,不断提高着图像的逼真程度与视觉效果。 计算机渲染涉及的主要技术包括光照模型、阴影生成、材质和纹理贴图、反射和折射、以及视点和相机模拟等。通过计算和模拟各种物理现象和光学效果,计算机渲染可以精确地再现真实世界中的光线反射、阴影投射、物体形变等细节,使得虚拟场景看起来更加逼真和生动。 当然,计算机渲染并非仅限于模拟真实场景,它还具有无限的创造力和自由度。艺术家和设计师可以利用计算机渲染技术创造出各种想象力丰富的图像和场景,带给观众更多的观赏和体验乐趣。 总而言之,计算机渲染在今天的娱乐、设计和艺术领域发挥着重要作用,它不仅能够帮助我们再现真实世界,还能够创造出无数无限的虚拟世界。随着计算机技术的不断发展,计算机渲染的未来将会更加精彩和多样化,为我们带来更多的视觉盛宴。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值