单片机中unsigned char 和unsigned int的区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机中unsigned char 和unsigned int的区别相关的知识,希望对你有一定的参考价值。
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uchar z);
uchar prem;
void main()
prem=0xfe;
P0=prem;
while(1)
prem=_cror_(prem,1);
delay(100);
P0=0XFF;
delay(100);
P0=prem;
void delay(uchar z)
uint i,j;
for(i=z;i>0;i--)
for(j=100;j>0;j--);
在这个程序中把下面的delay函数中的uint改成uchar有很大区别,为什么?
改过之后delay函数不起作用了 为什么
unsigned char 0~255 参考技术A 单片机中unsigned char 与 unsigned int的区别如下:
unsigned char 是无符号字符,数据长度是8位,表示值范围从0~255
unsigned int 是无符号整数,数据长度是16位(或者32位,看单片机的型号而定),表示范围从0~65535(或者0~4294967295)
另外,由于表示值的范围不同,导致它们的计算也会有一些性能的不同。主要体现在数据对齐问题上。cpu在将unsigned char和unsigned int进行混合运算的时候,会先讲前者提升为unsigned int,然后再进行计算。而直接两个unsigned int进行计算,就没有这个问题。 参考技术B 他们都为unsigned关键字修饰的类型,unsigned char表示无符号字符型,unsigned int表示无符号整型
他们在计算机中占用的内存大小不同,unsigned char 占8位,即1个字节,能表示的数据范围是0~255,而unsigned int一般占32位,即4个字节,能表示的数据范围是0~65535。 参考技术C 我的回答只针对C/C++语言,不知道你学的是不是这两种语言。 在C/C++中char型等价于整型数据,占一个字节,8个比特位。在语言中默认的就是signed char ,其范围 对应整数-128~+127,而unsigned char代表的是无符号的字符型,对应的整数范围为0~255. 例如: #include<iostream> using namespace std; int main() char ch='a'; cout<<(int)ch<<endl; return 0; 输出的就是97,即小写字母a,对应的十进制数为97.A对应为65. 参考技术D 1.unsigned int 范围是65536;
2.unsigned char 范围是256.仅此而已;
3.范围取值不一样用个地方也就不一样了,就只有这个区别而已。
C语言实现unsigned char 转换unsigned int?
希望能得到您自己亲身证实了的答案,谢谢 不借用其他函数转换 程序如下: void main(void) unsigned char a=0x11,b=0xFF; unsigned int c=0; c=(a<<8)|b; printf(">>:%x\n",c); 这样能实现吗? 我用在51单片机中
参考技术A 本质上char类型和int其实是同一种类型。。。都代表了整数型大小,转换的话,在前面加上强制转换符就好了,如int()之类的以上是关于单片机中unsigned char 和unsigned int的区别的主要内容,如果未能解决你的问题,请参考以下文章
unsigned char 与 char 有啥却别?何时适用
java jni 调用 c 代码, c 中 unsigned char* 数据 如何传给java?
ARDUINO 中将一个unsigned char 的数组的数据转化为一个long 型的数