求补码怎么求的...#include #include void main (){unsigned short int

求补码怎么求的...
#include
#include
void main ()
{
unsigned short int a;
unsigned short int getbits(unsigned short);
printf ("ninput an octal number:");
scanf ("%o",&a);
printf ("%on",getbits(a));
}
unsigned short int getbits (unsigned short value)
{
unsigned int short z;
z=value&0100000;
if(z==0100000)
z=~value+1;
else
z=value;
return z;
}
输入152525怎么会输出25253呢?书上的例子,
bfghj212 1年前 已收到1个回答 举报

深圳卷卷风 幼苗

共回答了24个问题采纳率:87.5% 举报

程序让你输入的是8进制数字,所以152525是八进制的
化成二进制为1101 0101 0101 0101
判断第一位是1
z等于 取反+1 = 10 1010 1010 1010 +1 在打印成8进制就是25253了

1年前 追问

3

bfghj212 举报

谢谢,不过~value后,不是把符号位也反了吗? .... 越弄越晕啊,,,
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.026 s. - webmaster@yulucn.com