最新消息:点击查看大S的省钱秘笈

正负数十进制转二进制 位运算 C语言版

编程相关 Slyar 324浏览 0评论

文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。

今天在论坛上看到一个负十进制数转二进制的问题,于是小研究了一下,顺便学习位运算。。。

我们知道负数的二进制是由其正数的二进制取反(求反码)再加一(求补码)得到的,例如:

十进制数528的二进制码为:0000001000010000

将其取反(求反码)后的结果:1111110111101111

将反码加一(求补码)后结果:1111110111110000

所以,-528的二进制码为1111110111110000

小说一下概念,然后看一个位运算符,按位与(&) :0&0=0 , 0&1=0 , 1&0=0 , 1&1=1

我们知道,奇数的二进制最后一位全部为1而偶数的二进制最后一位全部为0,那么用按位与运算符我们可以很方便地知道一个数是奇数还是偶数,只要让数字 &1 就可以了,因为 奇数&1=1 ,而 偶数&1=0

现在看一段代码,作用是将十进制数转换为二进制数。

#include <stdio.h>

int main()
{
int x,i;
scanf("%d",&x);
for(i=31;i>=0;i--) printf("%d",x>>i&1);
system("pause");
}

重点就在 x>>i&1 啦,每次按照能否被二整除来确定0或者1,然后一位一位的移动,这样处理负数也是可以的,很爽~详细解释太麻烦,自己思考吧,嘎嘎~

转载请注明:Slyar Home » 正负数十进制转二进制 位运算 C语言版

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (4)

  1. ^-^
    hit94年前 (2012-10-28)回复
  2. 想法太棒了!
    jjy7年前 (2009-09-23)回复
  3. 学习了,很不错的想法
    xjwhangdian8年前 (2008-11-08)回复
  4. 来学习了。
    8年前 (2008-11-01)回复