简单理解16进制
发布日期:2024-04-22 02:33:41 浏览次数:56 分类:技术文章

本文共 911 字,大约阅读时间需要 3 分钟。

二进制数字只有2个:0和1

十进制数字有10个:0,1,2,3,4,5,6,7,8,9

16进制数字有16个:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,表示16进制数要加上前缀0x

在C语言中并不能直接表示出一个二进制数,

在C语言中表示一个十进制数,直接写数字就好了,比如:int a = 13;

在C语言中表示一个16进制数,要加上前缀0x,比如:uint8_t b = 0x13;

注意:0x13中的13,并不是我们通常认为的十进制中的13,而是16进制的13,

十进制的13对应的二进制是:0000 1101

16进制的13对应的二进制是:0001 0011,对应的十进制是19

也就是说,int a = 13;是给a赋值为13,而uint8_t b = 0x13;其实给b赋值为19.

int a = 13;uint8_t b = 0x13;int c = a + b;printf("%d+%d=%d\n", a,b,c);//13+19=32

为什么a用int声明,而b用uint8_t来声明呢,其实在上面代码中,b用int声明也可以,结果没有变化,但是含义是不同的。

我们知道,int类型占4字节,uint8_t类型占1字节。

1字节(Byte)是8个位(Bit),16进制的一个数字要占4个位,前面的0x13是2个数字,占8个位,也就是1字节,因此我们用uint8_t来声明变量,这种类型刚好是1字节。

用uint8_t可以声明的16进制数,最小是0x00,最大是0xFF(十进制255)

再比如数字300,表示为16进制数是0x12C,这里12C有3个16进制数字,占12个位,就不能用uint8_t声明了,而要用uint16_t,先把后面的12个位占满后,前面还有4个位是空的,系统自动用0来填补,我们写成0x12C和0x012C是一样的;

uint16_t d = 0x12C;uint16_t d = 0x012C;// 二进制0000 0001 0010 1100

 

如果是普通的数值计算,我们用十进制数就行了,没必要用16进制,

16进制经常用做位运算,位运算以后再介绍。

转载地址:https://blog.csdn.net/denton88/article/details/128974119 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:简单理解AJAX
下一篇:简单理解-非极大值抑制

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月30日 09时24分48秒