急!!补码、取反的问题

1285189390 2002-11-17 12:37:46
数据为4个字节的16进制ASC2码,既为2个字节的二进制数,且为补码表示(最高位为符号位,负数的绝对值为补码取反加1,正数为它本身2字节)且数据高字节位在前,低字节位在后。
我想知道,我得到这条数据以后,如果它表示的是负数,我怎么得到它的10进制表示?
...全文
182 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxj81 2002-11-21
  • 打赏
  • 举报
回复
机器数一般用最高有效位表示数的符号,0表示正,1表示负。
你将16进制数转换为2进制数就可以看出正负了。
除去最高符号位,然后用BCD码就可以将十六进制数转换为十进制数了

hameizi 2002-11-19
  • 打赏
  • 举报
回复
fabs 是求绝对值,和其他的语言一样的判断是正是负啊!
1285189390 2002-11-17
  • 打赏
  • 举报
回复
U P
1285189390 2002-11-17
  • 打赏
  • 举报
回复
TO : wxj81 :delphi中
wxj81 2002-11-17
  • 打赏
  • 举报
回复
请问你指的程序是在汇编语言程序中,还是在高级语言程序中?
1285189390 2002-11-17
  • 打赏
  • 举报
回复
TO hujianlinsoft(深蓝) :THANK U
比如我得到的数据为00D7 1、我在程序中怎么判断它是正数还是负数?
2、如果它是负数,我在程序中怎么得到它的绝对值,比如实际的数为-21。我怎么得到这个21?
hujianlinsoft 2002-11-17
  • 打赏
  • 举报
回复
将这个补码再求一次补,就得到他的原码了!
比如这个数据为 E 3 B F 3 7 4 B
那么用二进制表示为: 1110 0011 1011 1111 0011 0111 0100 1011
取反得到: 1001 1100 0100 0000 1100 1000 1011 0100
加一得: 1001 1100 0100 0000 1100 1000 1011 0101
即: - 1 C 4 0 C 8 B 5
9 C 4 0 C 8 B 5 为其原码!

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧