c语言中负数的读取

发布时间:2024年01月12日

自记:

?

1.以字节为例,其取值范围是 -128 ~ 127,即-2E7 ~ 2E7-1, 用最高位表示其符号,0表示正数,1表示负数。数值以补码形式存储。正数的补码就是该正数本身,负数的补码需要转化,如下:

1>.对负数取绝对值,用二进制表示

2>. 对每一位取反;

3>. 对该数加1。

注意:char类型的0 没有+0 和 -0 的区分,即使想区分,按照上述操作,得到的都是 0000 0000

举例:-1 取绝对值0000 0001 -> 取反1111 1110 ->加1得到 1111 1111

下面是一些数值的补码格式:

-128 存储数值 1000 0000

-127 存储数值 1000 0001

-126 存储数值 1000 0010

信捷伺服32位数据读取:

			//读取脉冲反馈
			servo_pulseposition_read();
			rs485_receive_data(rs485buf, &lenth);
			
			if ((rs485buf[5]<<8|rs485buf[6]) >0)
			{
				servo_data.pulsepositon = (rs485buf[3]<<8|rs485buf[4])+(rs485buf[5]<<8|rs485buf[6])*10000;
			}
			else 	if ((rs485buf[3]<<8|rs485buf[4]) > 9999)
			{
				servo_data.pulsepositon = rs485buf[3]<<8|rs485buf[4]+0xFFFF0000;
			}
			else 	if ((rs485buf[3]<<8|rs485buf[4]) < 9999)
			{
				servo_data.pulsepositon = rs485buf[3]<<8|rs485buf[4];
			}
			break;

文章来源:https://blog.csdn.net/u011878611/article/details/135543554
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。