标题: C语言长整型变量带负号如何处理? [打印本页]

作者: 18936674086    时间: 2022-5-11 19:14
标题: C语言长整型变量带负号如何处理?
这份说明书里面的带正负号的长整型变量 0XFF FF FF 7C  是怎么转换出-13.1来的?
还有在处理数据长整型这段程序里只能处理正的数,无法处理负数,是什么原因呢?float变量处理没问题,一到long int 就完了,各位大神救救孩子吧!

J48D{S6X9)Z6NP$E5WQLH0Z.png (397.57 KB, 下载次数: 40)

J48D{S6X9)Z6NP$E5WQLH0Z.png

WBQU(@5}`Y041PB{U{~8W`T.png (84.24 KB, 下载次数: 42)

WBQU(@5}`Y041PB{U{~8W`T.png

0U04B]$IV1[4S99AJVS@_7F.png (66.14 KB, 下载次数: 39)

0U04B]$IV1[4S99AJVS@_7F.png

作者: Y_G_G    时间: 2022-5-11 20:56
是补码就是把按位取反再+1
作者: Hephaestus    时间: 2022-5-11 21:07
单位是0.1m3不就理解了吗?FFFFFF7C是-132,对应-13.2m3,至于为什么差1,那是写文档的伙计不懂。
作者: Hephaestus    时间: 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. }
复制代码

作者: Y_G_G    时间: 2022-5-11 21:47
0XFF FF FF 7C就是补码呀
补码运算就是取反再+1
结果就是132的二进制,单位0.1,结果应该是13.2
因为是负的,那就是-13.2
为什么是-13.1,那就不知道了
作者: 18936674086    时间: 2022-5-12 07:10
Y_G_G 发表于 2022-5-11 20:56
是补码就是把按位取反再+1

谢谢,明白了 我把补码这茬给忘记了
作者: 18936674086    时间: 2022-5-12 07:10
Hephaestus 发表于 2022-5-11 21:07
单位是0.1m3不就理解了吗?FFFFFF7C是-132,对应-13.2m3,至于为什么差1,那是写文档的伙计不懂。

明白了,非常感谢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1