|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Jany 于 2013-7-21 17:52 编辑
老师们好,请问下算法中对于负数补吗形式,我搞晕了,求明示,比如,在与【&】运算中,举例如下:
-5&-9与运算
1111 1011 -5的补码
1111 0111 -9的补码
按位与 得出结果为1111 0011 【该数为负数 的补码】
该负数原码 =补码-1 再取反码
减1后:1111 0010
取反: 1000 1101
最终结果为-13;最高为1,为负数。
可在位移运算中,举例如下:
-60位移运算
-60的补吗为11000100,比如右位移>>2,结果为11110001,负数补1,整数补0,有的取决于系统。
可这里的结果11110001这么二进制运算转十进制结果怎么不一样啊,在VC中运算为-15,可结果11110001转十进制怎么会是-15
【说明:右移相当于除以2的N次方,左移相当于乘以2的N次方】
还有上面的与【&】运算和下面的位移运算,怎么好像补吗计算了,一个要转回来,一个怎么不用啊
比如与运算结果
按位与 得出结果为1111 0011 【该数为负数 的补码】
该负数原码 =补码-1 再取反码
减1后:1111 0010
取反: 1000 1101
最终结果为-13;最高为1,为负数。
它的补吗运算后再反回到负数原码,而位移就直接用补吗来计算,还有几个运算我一起想起来计算想最终分清几种运算的区别,可就是绕不出来,越想越模糊,希望老师们帮助下,理理清,谢谢。
【知道怎么补吗,可补吗形式运算真的很纠结。】
|
|