计算器中十进制-1转化为二进制为11111111(字节),而二进制的11111111转化为十进制却是255,是怎么回事?

如题所述

-1要表示二进制数,得采用有符号数,计算机一般用补码
因为你字长选为8位,所以-1的补码
表示为256-1,即11111111.
八位补码表示的整数范围 -128.........127
如果是无符号数,字长8位的范围就是0...255
所以,八位11111111表示有符号数时为 -1, 表示无符号数时为255
这看你要表示的是什么类型的整数了。你有什么仍不明白的,继续问我
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-25
首先:任何信息在计算机中都存储为以字节为单位的0,1序列.
其次,整数分为符号整形和无符号整形,符号整形字节最高位为符号位,整数该位为0,负数该位为1
-1转化为2进制即为-1在2进制中的表示,一个字节(8位)足以表示-128 - 127的符号整数范围.
最高位符号位,二进制转为十进制的计算为:-1的最高位是指数幂*2(n-1) + 位i上的数字*2(i)...:
由此可得-1的字节表示为11111111.
而二进制的11111111转化为十进制,应该为多少?应该看转化成的十进制是无符号还是有符号,而且要看整形占用多少字节.
如果转换成符号整数,整形占用2个字节以上,11111111实际上存储表示为00000000 11111111
故为255.
如果转换成符号整数,整形占用1个字节,那么显然应该为-1
...
综上所述,理解了整形以字节为基础的存储方式,这些东西不难理解.
第2个回答  2011-05-25
-1的原码是10000001,它有符号位,其中开头的1指的是“—”号,反码为11111110,补码为111111111
而后面所说的11111111指的无符号位数,即255追问

在计算器中怎么用二进制表示-1,使其在转化为十进制的时候可以显示为-1。或者说计算器中十进制-1转化为二进制为11111111(字节),而再把二进制的11111111转化为十进制为什么不是-1呢?

追答

在计算机中所有的数值 都是用补码表示的,你说的应该不可以实现吧。反正我不知道
而后而所说的就是有符号数和无符号数的区别,8位无符号的范围0~255,而有符号数则是-128~127,

第3个回答  2011-05-25
你确定-1转化为二进制为11111111吗?我认为不是,肯定会与255有所区分,你可以咨询一下你的信息技术老师。
第4个回答  2019-06-28

进制转换的前提是选用统一的字节单位,然后进行转换,你的提问应该描述为:

计算器中以1字节(8位)为单位,的十进制-1转化为二进制为11111111;

而以字(计算器中的字表示2字节即16位)为单位,的二进制11111111即(0000 0000 1111 1111)

转换为十进制用计算器就是255,这样描述就没错。

如果按照你的描述,“二进制的11111111转化为十进制就是255”,这种描述本身就是错误的,因为如果以1字节(8位)的二进制11111111转化为十进制那么就是-1了而不是255了,如下图详解: