关于补码、进制换算的问题

我在自学的时候有关补码和进制的地方看不懂,请高手指教:
1.带符号的整数,0表示正,1表示负,那要把一个数转换成2进制,前边加
0 / 1吗?
例如:+46 [10进制] 转换成 2进制 是多少?101110?or 0101110?or
00101110?
2.求-46 的补码 怎麽求啊,尽量写过程,我算的跟书上不同,不知怎麽回事
3.带符号整数条件下,FFFF『16』转化 成 10 进制是等于-1还是65535?为什麽?求过程
4.想学汇编语言是不是要把ASCII码表背下来啊?
谢谢大家了,顺便问一下,我是热衷于计算机的人,想要深入学习,从哪开始学比较好?『目前是菜鸟!』

1、对。正数,在二进制最高位前面加0;负数,在二进制最高位前面加1。
正数的补码就是正数真值本身,在最高位前加上符号位就行了。
+46(10),二进制真值为+101110,加上符号位为0101110。故+46[十进制]转换成二进制是0101110。(如果有要求写为一个字节的长度,也就是8位二进制数,那么就写为00101110。没有这样的要求就不用这样写。)

2、由负数的真值求补码,方法是“尾数各位求反,末位加1,加上符号位”。
-46(10),二进制真值为-101110,将尾数各位求反后为-010001,末位加1后为-010010,加上符号位为1010010。故-46转换成二进制补码就是1010010。(如果有要求写为一个字节的长度,那么就写为11010010。没有这样的要求就不用这样写。)

3、应该是-1。FFFF(16)=1111 1111 1111 1111(2)。现在我们知道这个数为带符号整数,那么最高位就应该理解为符号位,最高为1就是一个负数。而一个用补码表示的负数,其尾数是“真值各位求反,末位加1”后得到的。我们要知道原数真值,只需要进行逆运算就行了,也就是“末位减1,各位求反”。1111 1111 1111 1111(2),恢复符号位后为-111 1111 1111 1111,末位减1后为-111 1111 1111 1110,各位求反后为-000 0000 0000 0001,即-1。

4、将ASCII码表背下来似乎没有必要,需要的时候查一下不就行了。当然,将几个常用的符号的代码记住会比较方便,回车、换行、空格一类。还有就是数字、字母是按顺序排列的,记住第一个代码,依次往下数就行了,很方便的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2006-09-04
8进制和16进制只能用达无符号的正整数
FFFF转化成10进制就是65535,转换过程与2进制转化成10进制原理一样
ffff=f*16的3次方 + f*16的二次方 + f*16的1次方 + f*16的0次方
=65535

1、带符号的整数,0表示正,1表示负,那是原码,也就是机器数,把一个数转换成2进制,前面不需要加0或1
+46转换成二进制就是101110,-46装换成二进制就是-101110
2、关于补码,正数的补码与原码相同,也就是+46的八位二进制补码就是0010 1110,负数的补码是在其“反码”的末位加1,也就是-46的八位二进制补码就是
先取其反码是1101 0001,末位加一得到其补码1101 0010

正数的反码表示与“原码”一样,46就是0010 1110
而负数的反码表示为它原码的数值部分(不包括符号位)的按位取反(再加符号位)而形成的
-46二进制反码就是
先得其原码是1010 1110
除符号位,其它位按位取反就是得到其反码1101 0001

建议你初学还是不要去学习汇编语言
相似回答