DBC的故事(二)

摘要:
第一部分介绍MSB和LSB,而本部分介绍更复杂的:有符号和无符号数字。2) CAN信号类型设置为已签名。在上一篇文章中提到,信号的定义中有SignedFlag。当SignedFlag为负号时,表示信号有符号。格式:SG_名称:StartBit|Length@ByteOrderSignedFlag[最小值|最大值]“单位”接收器1,接收器22。信号传输的比较长度为字节数据传输。1) 无符号数字的取值范围:0~255,传输源代码。例如,-7,源代码=10000111,补码=11111 001。请回复“DBC示例”获取。

上篇介绍了MSB和LSB,此篇介绍更复杂的:有符号和无符号数。

1.信号符号

CAN信号有其物理意义,如温度、扭矩等,这些信号是有负值的,常见的解决方案有2种:

1)把offset设成负值

如温度offset=-40,则温度最小值-40。

2)CAN信号类型设为有符号

上篇文章中提到signal定义中有SignedFlag,当SignedFlag是负号时,表示此信号是由符号的。

  • 格式:SG_ Name : StartBit Length ByteOrder SignedFlag (Factor,Offset)  [Minimum | Maximum] "Unit"   Receiver1,Receiver2

2.信号传输

比较长度是一个byte(8个bit)数据传输。

1)无符号数

数值范围:0~255(2^8-1),传输原码。例如:7=00000111。

2)有符号数

最高位是符号位,数值范围:-128~127,正数传输原码,负数传输补码。例如-7,原码=10000111,补码(除符号位按位取反,再加1)=11111001。网络传输的就是补码。

3.信号解析

在上篇文章基础上,更新了《dbcvalue》项目,比较有无符号数据的值。回复“DBC例子”获取。

1)无符号数

 DBC的故事(二)第1张

2)有符号数

 DBC的故事(二)第2张

免责声明:文章转载自《DBC的故事(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spark History Server配置使用C语言中怎么求动态数组大小下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python的整数没有补码一说

在刷题过程中,发现Python有一个和其他语言完全不一样的地方,就是对负数的二进制表示。Python里的数是无所谓Overflow的,即没有位数限制,因此也就无所谓补码,因为补码都是相对于位数来说的,32位补码和16位补码,肯定是不一样的。但是这样就导致了一个问题,就是无法直接得到32位二进制补码。 >>> bin(1) '0b1'...

C/C++(基础编码-补码详解)

两个数的交换 1.引入第三者。 2.求和运算,求差。(这样会产生内存溢出) 3.异或运算 a = a^b; b = a^b; a = a^b; 8b(bit位) = 1B(Byte=字节)//最小单位是字节 32位机:2^32 = 4G寻址能力 (王爽--统一编址,汇编语言) char类型一个字节,8位。[-128,12...

汇编语言中的数据类型

目录 一、数制及相互转换 1. N 进制数转换为十进制数 2. 十进制数转换为 N 进制数 3. 二进制数转换为八进制数或十六进制数 4. 八进制数或十六进制数转换为二进制数 二、计算机中数和字符的表示 (一)计算机中数的表示方法 1. 原码表示法 2. 补码表示法 (二)二进制编码 1. 十进制数的二进制编码(BCD 码) 2. 字...

Java中实现十进制数转换为二进制的三种方法

第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数。 那么,在实际实现中,可以用int的一个数来存储最后的二进制,每次求余后把余数存储在int型数的低位,依次递增。 public void binaryToD...

数的机器码表示——彻底弄清什么是原码、反码、补码、移码

数的机器码表示 @ 目录 数的机器码表示 原码 定点整数 定点小数 原码的计算 反码 定点整数 定点小数 反码的运算 补码 补码的由来 定点整数 定点小数 补码的运算 移码 移码的表示 移码的特点 原码、反码、补码、移码 为了妥善的处理数据运算过程中符号位的问题,于是就产生了把符号位和数值位一起编码起来表示相应的数的各种表...

Java动手实验及课后程序

课后作业 一、编写程序,消息框显示计算结果 设计思想:导入Scanner包,使用JOptionPane类来实现消息框的输入和结果的显示。 程序代码: package com; import java.util.Scanner; //导入Scanner包 import javax.swing.JOptionPane; public class Manner ...