永发信息网

signed char 类型的 -128 在机内存储 为什么是10000000,原码是多少,补码多少.

答案:3  悬赏:0  手机版
解决时间 2021-01-30 10:29
  • 提问者网友:兔牙战士
  • 2021-01-29 11:11
signed char 类型的 -128 在机内存储 为什么是10000000,原码是多少,补码多少.
最佳答案
  • 五星知识达人网友:北方的南先生
  • 2021-01-29 11:28
在计算机里面是用补码表示的,128的二进制码是:10000000,在计算里面并不是128,因为最高位是符号,它是个负数,那么负数的原码是多少呢,我们知道如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。
所以,10000000取反后就是11111111,把符号位去了就是01111111再加1就是10000000就是-128了
全部回答
  • 1楼网友:神也偏爱
  • 2021-01-29 12:55
这是计算机数据的解释,让你10分钟内明白 不是128是10000000,而是把10000000解释为128 为什么要这样? 因为按10000000(2)刚好都等于128(10),符合我们的认知 那怎样表示负数呢? 曾经很多人都认为应该和我们十进制学的做法一样,在前面加个符合位,可是这种方法不设计电路很麻烦,并且没有效率 直到不知道哪位发现了一个规律,因为计算机只能储存固定长度的数字 打个比方,小学生只能写二位十进制数,97 + 44 = 141怎么办? 后来人们采用了溢出则消除的方法,即97 + 44 = 41,多余部分省略 回到话题上来,正因为这样,又-3 + 44 = 41,把97解释为-3怎么样? 98 + 44 = -2 + 44 = 42,95 + 44 = -5 + 44 = 38 这真是太完美了,这样正负数使用的加减法完全一样,解决了cpu设计及效率的问题 后来人们把这种解释数据的方法成为signed,而一开始提到的方法叫做unsigned 补充说明,人们认为表示的非负和负数的量应该一样,所以0-49是非负数,50-99为负数,并且50为最大的负数-50 可是怎么计算一个正数的相反数呢? 简单就是100 - 99 = 1那么99就表示-1 为什么? 因为100在2位数里是0啊,而99是-1,那么0 - -1 = 1啦 到了中学,他们学了三位数,中学生自然会用1000来减,可是计算机不行 这又回到1和0上面了 原理一个定长数加上其补码等于,这个定长类数能表示的最大值 有来一个说明 01001011的补码就是1变0,0变1即10110100 他们相加就是
  • 2楼网友:慢性怪人
  • 2021-01-29 11:48
10000000就是补码
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯