嵌入式开发过程中透彻数据符号的解析
2016-09-13 20:36
274 查看
在单片机开发中,c语言编程如果不指定变量是否有符合时,默认的基础数据类型均为signed(有符号的数据)
现在我们以char为例,说明(signed) r与unsigned 之间的区别
首先单片机数据在内存中,char与unsigned char都是一个占用字节,但是区别就是,char的最高位为符号位,因此char能表示-128(0x80)~127(0x7F), unsigned char没有符号位,因此能表示0(0x00)~255(FF)。
原理如下:
有符号字符型变量 signed char 的取值范围:0 ~ 127:0x00-0x7f 0 000 0000 ---- 0 111 111
-1 ~ -128: 0xFF~0x10 1 111 1111 --- 1000 000
负数的算法;最高位符号位:0为正,1为负
其余位取反再加1即为该数的绝对值:
如:0x10: 1 000 0000,低7位取反:1 (负号) 111 1111=127再加1则为128,所以,该值为-128
再如:0xA4: 1 010 0100, 低7位取反:1 (负号) 101 1011=91再加1则为92,所以,该值为-92
现在我们以char为例,说明(signed) r与unsigned 之间的区别
首先单片机数据在内存中,char与unsigned char都是一个占用字节,但是区别就是,char的最高位为符号位,因此char能表示-128(0x80)~127(0x7F), unsigned char没有符号位,因此能表示0(0x00)~255(FF)。
原理如下:
有符号字符型变量 signed char 的取值范围:0 ~ 127:0x00-0x7f 0 000 0000 ---- 0 111 111
-1 ~ -128: 0xFF~0x10 1 111 1111 --- 1000 000
负数的算法;最高位符号位:0为正,1为负
其余位取反再加1即为该数的绝对值:
如:0x10: 1 000 0000,低7位取反:1 (负号) 111 1111=127再加1则为128,所以,该值为-128
再如:0xA4: 1 010 0100, 低7位取反:1 (负号) 101 1011=91再加1则为92,所以,该值为-92
include <stdio.h> void f(unsigned char v) { char c = v; unsigned char uc = v; unsigned int a = c, b = uc; int i = c, j = uc; printf("----------------\n"); printf("%%c: %c, %c\n", c, uc); printf("%%X: %X, %X\n", c, uc); printf("%%u: %u, %u\n", a, b); printf("%%d: %d, %d\n", i, j); } int main(int argc, char *argv[]) { f(0x80); f(0x7F); return 0; } 输出结果: ---------------- %c: ?, ? %X: FFFFFF80, 80 %u: 4294967168, 128 %d: -128, 128 ---------------- %c: , %X: 7F, 7F %u: 127, 127 %d: 127, 127
相关文章推荐
- iOS开发JSON文件解析数据成Model的过程简单介绍
- 大数据Spark “蘑菇云”行动前传第3课:在IDE下开发第一个Scala程序透彻解析及Scala控制结构详解实战
- 嵌入式开发第二日(man 手册、linux基本命令、vim编辑器、代码编译过程、编译工具、基本数据类型、控制流)
- Java开发过程中经常碰到数据类型的问题
- 在JSP开发中使用jdom解析临时存放数据的XML文件 (转)
- D2D网络数据存储器开发全过程(5)
- ajax开发过程表单提交数据出现乱码和解决办法
- 用c#进行移动设备开发时rda同步数据时的设置详细过程
- 数据分发的开发思想发展过程[2004年4月26日 9:44 ]
- [Joe 原创] Web Control 开发系列(二) 深入解析Page的PostBack过程和IPostBackDataHandler
- D2D网络数据存储器开发全过程(3)
- D2D网络数据存储器开发全过程(2)
- Elf动态解析符号过程(转载) - *nix文件格式 - j4ckl1u
- Ajax开发过程中提交获取数据的乱码问题
- 嵌入式系统开发人员C语言测试题--填空题(数据类型和变量)
- D2D网络数据存储器开发全过程(4)
- 在JSP开发中使用jdom解析临时存放数据的XML文件
- 基于ARM 的嵌入式系统程序开发要点-(二)系统的初始化过程
- ELF动态解析符号过程(修订版)
- uClinux嵌入式系统开发过程控制