24小时热门版块排行榜    

查看: 2072  |  回复: 14

晴间多云

木虫 (正式写手)

送红花一朵
引用回帖:
9楼: Originally posted by hoddescle at 2014-12-16 21:34:24
对不起,我忘记了,有个+0和-0的问题,
我也忘记怎么处理这两个0了,
至于n进制的就是
∑ n^(i-1)*a_i
这样子算
比如十进制的32就是10^1*3+10^0*2
其他的进位一样...

我是说的是负整数,6楼算出的107对吗?
在生活中要学会独立思考和解决一些问题!
11楼2014-12-16 22:20:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whflw

木虫 (初入文坛)

引用回帖:
10楼: Originally posted by 晴间多云 at 2014-12-16 22:11:00
可以说详细一点吗?没看懂哎。。。...

这要和补码的本质说起了,补码是取反加一的结果,用0xff(255)去减可以达到取反的效果,然后加1就是得到原来的数的绝对值了。

» 本帖已获得的红花(最新10朵)

12楼2014-12-17 09:00:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

晴间多云

木虫 (正式写手)

送红花一朵
引用回帖:
12楼: Originally posted by whflw at 2014-12-17 09:00:42
这要和补码的本质说起了,补码是取反加一的结果,用0xff(255)去减可以达到取反的效果,然后加1就是得到原来的数的绝对值了。...

谢谢啦
在生活中要学会独立思考和解决一些问题!
13楼2014-12-17 11:08:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

晴间多云

木虫 (正式写手)

引用回帖:
12楼: Originally posted by whflw at 2014-12-17 09:00:42
这要和补码的本质说起了,补码是取反加一的结果,用0xff(255)去减可以达到取反的效果,然后加1就是得到原来的数的绝对值了。...

你看这样算对不?
找到方法了:
(1 1101011)二进制 ,最高位为1,可以确定这是一个负数,最高位为符号位,其他位为数值位,符号位不变,数值位逐个取反得:1 0010100 ,然后加1得:1 0010101 ,再将其按权展开后相加,但是符号位(即最高位)不在转换范围之内,现在将1 0010101从最低位到最高位进行编号,则只算第1、3、5号位的数1,第8位为符号位,则 :
(1 1101011)二进制= -(1 0010101)二进制= -(1×2^0+1×2^2+1×2^4)= -(1+4+16)=-(21)十进制

现在反过来算:将10进制的-21 转换为二进制。
先算其绝对值的二进制数: 21/2......1
                                        10/2......0
                                          5/2......1
                                          2/2......0
                                          1/2......1
                                          0
将余数倒序排列得:10101 补足8位得00010101;
      逐位取反得:11101010
              再加1得:11101011。
在生活中要学会独立思考和解决一些问题!
14楼2014-12-17 16:44:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whflw

木虫 (初入文坛)

引用回帖:
14楼: Originally posted by 晴间多云 at 2014-12-17 16:44:18
你看这样算对不?
找到方法了:
(1 1101011)二进制 ,最高位为1,可以确定这是一个负数,最高位为符号位,其他位为数值位,符号位不变,数值位逐个取反得:1 0010100 ,然后加1得:1 0010101 ,再将其按权展开后 ...

上面的说法是对的,有一个数是例外的,也就是80H,也就是-128,这个数是需要将符号位也作为数值位的,这个记住了就可以了
15楼2014-12-18 08:57:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 晴间多云 的主题更新
信息提示
请填处理意见