位运算实现 十进制(正负)转换成二进制

本文介绍了使用位运算实现十进制(包括正负数)转换成二进制的方法,核心在于n>>i&1的操作。同时提到了一种新的二进制转十进制的C++实现,利用了C++类库提供的二进制数据类进行转换。
摘要由CSDN通过智能技术生成
我们知道负数的二进制是由其正数的二进制取反(求反码)再加一(求补码)得到的,例如:

十进制数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 n;
    while(~scanf("%d", &n)) {
        for(int i=31; i>=0; i--) printf("%d", n>>i&1);
        puts("");
    }
    return 0;
}



重点就在 n>>i&1 啦,每次按照能否被二整除来确定0或者1,然后一位一位的移动

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值