A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我们都知道无符号数在计算机中就是相当于一个正数,它是直接将其转换为二进制数直接存储,而有符号数即意味着有负数的存在。以一个字节为例,一个字节有8位,若用来存储有符号数,那么最高位就是符号位,最高位为0代表是正数,最高位为1代表是负数,那么这个字节可以存储的最大数就为01111111,换算成十进制就是127,而最小的数最后换算成十进制数怎么就是-128,它的补码是什么?怎么得来的?求解

4 个回复

倒序浏览
计算机用补码做加法计算,当-1+(-127)时,计算机补码计算为1111 1111+1000 0001=1 0000 0000即为-128,但如果根据100000000反过来计算又不能还原计算,所以严格讲为-127,但你要知道这个算法就行
回复 使用道具 举报
哦,可不可以这样理解,-127的源码是11111111,那么它的补码就是10000001,-126的源码是11111110,它的补码就是10000010,-125的源码是11111101,它的补码就是10000011,可以看出有一个规律,符号位以后7位的数值依次增大,而它们所对应的十进制数值的绝对值依次减小,既然在内存当中负数是以补码的形式存储的,那我们理应想到还有一个比-127更小的数,而且是小1,那它的补码就应该是10000000,除去符号位另外7位各位取反就应该是1111111,在此基础上再加1,就得到了它的源码10000000,所以应该是-128,不知有无道理
回复 使用道具 举报
慕名黑马生 发表于 2015-7-21 00:16
计算机用补码做加法计算,当-1+(-127)时,计算机补码计算为1111 1111+1000 0001=1 0000 0000即为-128,但 ...

哦,可不可以这样理解,-127的源码是11111111,那么它的补码就是10000001,-126的源码是11111110,它的补码就是10000010,-125的源码是11111101,它的补码就是10000011,可以看出有一个规律,符号位以后7位的数值依次增大,而它们所对应的十进制数值的绝对值依次减小,既然在内存当中负数是以补码的形式存储的,那我们理应想到还有一个比-127更小的数,而且是小1,那它的补码就应该是10000000,除去符号位另外7位各位取反就应该是1111111,在此基础上再加1,就得到了它的源码10000000,所以应该是-128,不知有无道理
回复 使用道具 举报
在计算机中存储的都是补码,负数的补码事它本身取反后价1的结果
-128
本身: 10000000
取反: 11111111
补码:  10000000
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马