[应用相关] unsigned int 与 unsigned long

[复制链接]
3327|11
 楼主| wangjiahao88 发表于 2018-12-6 13:36 | 显示全部楼层 |阅读模式
unsigned long int在C语言中是无符号长整形变量,是整形变量的一种。
      unsigned long int 与unsigned long是等价的,即定义的时候int可以不写。  C语言字节数为4,与long型数据一样。  
      unsigned long int的取值范围: 0~4294967295 即 0~(2的32次方-1)  
      unsigned 是无符号  long是长  int是整型数据  unsigned long int 就是无符号长整型数据
unsigned
  整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数拉;如果是无符号数,则都解释为正数。同时在相同位数的情况下,所能表达的整数范围变大。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。
int
int数据类型,在32位系统中(现在基本上int都是32位),范围-2147483648~+2147483647。unsigned类型 的int 范围:0~4294967295 即 0~(2的32次方-1)
  
所以我觉得unsigned int 与 unsigned long 在一般情况下是一样的!
---------------------
uint16_t Get_Adc_Average1(uint8_t times)
{
    uint32_t temp_val=0;
    uint8_t t;
    for(t=0; t<times; t++)
    {
        temp_val+=ADC_ConvertedValue[0];
    }
    return temp_val/times;
}

unsigned int Get_Adc_Average1(unsigned int Input_dat,unsigned int times)
{
    unsigned long temp_val=0;
    unsigned int t;
    for(t=0; t<times; t++)
    {
        temp_val+=Input_dat;
    }
    return temp_val/times;
}



 楼主| wangjiahao88 发表于 2018-12-6 13:37 | 显示全部楼层
如果说 用到了计算平均数的时候,就会遇到一个问题!在这里,就需要用这个计算方法了!
toofree 发表于 2018-12-6 14:29 | 显示全部楼层
不论什么编译环境,都可以先sizeof一把,看看到底占几个字节
20181206142819.png
 楼主| wangjiahao88 发表于 2018-12-6 14:55 | 显示全部楼层
还真是!你这个方法好!

看来我总是胡乱的瞎猜一下!
磨砂 发表于 2018-12-7 13:56 | 显示全部楼层
很基础很详细
晓伍 发表于 2018-12-7 14:00 | 显示全部楼层
这样好 省的上网查了
八层楼 发表于 2018-12-7 14:04 | 显示全部楼层
简单好**的办法啊
观海 发表于 2018-12-7 14:47 | 显示全部楼层
这个办法很简便啊
木木guainv 发表于 2018-12-12 12:38 | 显示全部楼层
讲解的非常详细
xiaoqizi 发表于 2018-12-12 12:43 | 显示全部楼层
根据片子的系统不同,代表的位数也不同吧应该
wakayi 发表于 2018-12-12 12:50 | 显示全部楼层
就是用sizeof
 楼主| wangjiahao88 发表于 2019-1-3 15:14 | 显示全部楼层
long 是4个字节?

float 是8个字节吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

500

主题

7585

帖子

31

粉丝
快速回复 在线客服 返回列表 返回顶部