找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1139|回复: 6
收起左侧

C语言长整型变量带负号如何处理?

[复制链接]
ID:832450 发表于 2022-5-11 19:14 | 显示全部楼层 |阅读模式
这份说明书里面的带正负号的长整型变量 0XFF FF FF 7C  是怎么转换出-13.1来的?
还有在处理数据长整型这段程序里只能处理正的数,无法处理负数,是什么原因呢?float变量处理没问题,一到long int 就完了,各位大神救救孩子吧!
J48D{S6X9)Z6NP$E5WQLH0Z.png
WBQU(@5}`Y041PB{U{~8W`T.png
0U04B]$IV1[4S99AJVS@_7F.png
回复

使用道具 举报

ID:401564 发表于 2022-5-11 20:56 | 显示全部楼层
是补码就是把按位取反再+1
回复

使用道具 举报

ID:883242 发表于 2022-5-11 21:07 | 显示全部楼层
单位是0.1m3不就理解了吗?FFFFFF7C是-132,对应-13.2m3,至于为什么差1,那是写文档的伙计不懂。
回复

使用道具 举报

ID:883242 发表于 2022-5-11 21:28 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdint.h>

  4. int main(int argc, char *argv[]) {
  5.         int32_t i,j=-987654321;
  6.         int8_t asc[10]="         ";
  7.         asc[0]=j>0?'+':'-';
  8.         for(i=9;j;i--){
  9.                 asc[i]=(j>0?j%10:-j%10)+'0';
  10.                 j/=10;
  11.         }
  12.         printf("\r\n%s",asc);
  13.         return 0;
  14. }
复制代码
回复

使用道具 举报

ID:401564 发表于 2022-5-11 21:47 | 显示全部楼层
0XFF FF FF 7C就是补码呀
补码运算就是取反再+1
结果就是132的二进制,单位0.1,结果应该是13.2
因为是负的,那就是-13.2
为什么是-13.1,那就不知道了
回复

使用道具 举报

ID:832450 发表于 2022-5-12 07:10 | 显示全部楼层
Y_G_G 发表于 2022-5-11 20:56
是补码就是把按位取反再+1

谢谢,明白了 我把补码这茬给忘记了
回复

使用道具 举报

ID:832450 发表于 2022-5-12 07:10 | 显示全部楼层
Hephaestus 发表于 2022-5-11 21:07
单位是0.1m3不就理解了吗?FFFFFF7C是-132,对应-13.2m3,至于为什么差1,那是写文档的伙计不懂。

明白了,非常感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表