..磊●﹖ 发表于 2012-1-18 04:26:12

求助。熟知补码的鱼友请进来帮看下。

看到补码的章节,听得不的很懂,于是去下载了关于补码的讲解视频。
毛主席说的好!自己动手丰衣足食,于是边看教学视频边打开了我电脑上自带的 伟大的 计算器!(当然用的是科学型!)
慢慢开始计算。
老师说道F6计算成-10的方法。
就是 在计算器16进制下 输入F6 然后转换为2进制 然后再 -1 然后再 取反 最后再转换为 10进制! 结果= 10也就是 -10

那老师在专门讲补码的课程里说到 7 的正数2进制表示方式为0000111-7 在在2进制里表示为 11111001
计算方式我计算过·2进制确实=这个。但 转换为 10进制或者16进制的时候却不是=7!
居然是
10进制=249
16进制=F9
求解·如何更灵活的去掌握补码!

chao_prince 发表于 2012-1-18 10:31:45

因为计算器把你的数当成无符号型的数来计算了。。你试着自己动手算一下。。无符号型的11111001的十进制或十六进制与计算器算出来的是不是一样的。

小马过河 发表于 2012-1-18 11:48:21

http://bbs.fishc.com/thread-12858-1-1.html

Seely 发表于 2012-1-18 18:01:59

1111 1001   你把它当成无符号数了,所以 10进制=249 16进制=F9 ,
你用的计算器转换的吧,也就是说你把前面的1111符号位当成了有效位来计算的。

当一个有符号型二进制数的最高位是1的时候说明它是负数,求出补码,转换进制,然后加负号。
如:有符号型二进制字节数据 1111 1100   
       转有符号型十六进制:4位二进制数用一位十六进制数表示 1111 1100 = FC (十六进制没有用前面加负号的表示方式)
       转有符号型十进制:最高位是“1”为负数,求补码得:0000 0100(十进制 4) 然后再加负号得 - 4

用16进制的数值表示的有符号型数据,告诉你个简单的判断方法:当最高位大于等于8h时为负数,当最高位小于等于7时为正数。

ever.g 发表于 2012-1-18 23:20:26

;P 路过学习了,确实很绕
页: [1]
查看完整版本: 求助。熟知补码的鱼友请进来帮看下。