游戏引擎架构之16进制数与16位整型的区别

首先需要明白的是这两个概念之间并没有什么实际的相关性,之所以用这篇文章来记录这个问题纯属个人基础知识薄弱,在读《游戏引擎架构》这本书的时候,在这里卡了一下。

我的疑问:一个16进制的数占几个字节?为什么。一个16位无符号整数占几个字节?为什么。

用C#语言为例说明。

简单列举一下C#中的几种整型:Byte、UInt16、Int32等等,这些数据类型是什么概念呢?是对应进制的数(8进制、16进制、32进制)还是对应位数的数(8位整型、16位整型、32位整型)?

看下C#自己的定义:

从定义可知,这些数据类型的概念是以“位”来定义的。

计算机中的“位”属于二进制层面的概念,所以对于“几位几位”的什么数据,都是二进制层面上的概念。

我们知道,8bit = 1byte,所以,一个Byte数占用一个字节,一个UInt16数占用两个字节,一个Int32数占用四个字节。

C#中16进制的数以“0x”开头。看下图,左边为程序右边为输出:

可以根据需要输出不同进制的数据。

一个字节可以表达的十进制数据范围是0-255,那么需要几位16进制的数可以表达同样的数据范围呢?用计算器测试一下即可:

答案是两位。所以说一个16进制数据占0.5个字节。

总结:

1、16进制数与16位整型之间并没有什么相关性,是两个不同层面上的概念。

2、一个16进制数占用0.5个字节,两个16进制数占一个字节。一个16位整型占2个字节。

原文地址:https://www.cnblogs.com/luguoshuai/p/14169529.html