首页 > 代码库 > 位运算实现 十进制(正负)转换成二进制
位运算实现 十进制(正负)转换成二进制
我们知道负数的二进制是由其正数的二进制取反(求反码)再加一(求补码)得到的,例如:
十进制数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
现在看一段代码,作用是将十进制数转换为二进制数。
重点就在 n>>i&1 啦,每次按照能否被二整除来确定0或者1,然后一位一位的移动,这样处理负数也是可以的
十进制数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,然后一位一位的移动,这样处理负数也是可以的
位运算实现 十进制(正负)转换成二进制
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。