位运算实现 十进制(正负)转换成二进制
来源:互联网 发布:少儿单片机培训机构 编辑:程序博客网 时间:2024/05/22 00:17
我们知道负数的二进制是由其正数的二进制取反(求反码)再加一(求补码)得到的,例如:
十进制数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
现在看一段代码,作用是将十进制数转换为二进制数。
十进制数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,然后一位一位的移动,这样处理负数也是可以的
说到这里,最近又总结了一个新的 由二进制数转换为十进制数 的方法,我们可以不用字符数组来存储二进数位,C++类库提供了二进制数据类,并且可以用其方法转换成十进制。
代码如下:
#include <iostream>#include <bitset>using namespace std;bitset <32> bint; //可以为16位或者32位,但是不能是64位int main(){ while(cin >> bint) { long long res = bint.to_ulong(); cout << res << endl; } return 0;}
0 0
- 位运算实现 十进制(正负)转换成二进制
- 使用位运算实现有符号的十进制正负数转二进制输出
- 正负数十进制转二进制 位运算 C Language
- 十进制转换成二进制示例代码位运算
- 位运算(十进制转二进制)
- java二进制、八进制、十进制、十六进制相互转换及位运算
- 位运算应用:十进制转换二进制再输出
- 十进制负数转换成二进制数的方法及位运算
- java位运算(一),了解二进制与八进制,十进制以及16进制的转换
- 位运算实现二进制转换 C语言
- 二进制数转换成十进制数(栈来实现)
- 【JavaScript实现十进制转换成二进制】
- 位运算实例(二):十进制转为二进制
- 十进制转换成二进制
- 十进制转换成二进制
- 十进制转换成二进制
- 十进制转换成二进制
- 十进制转换成二进制
- 间接寻址的自我练习
- gdb命令
- Linux 开机流程详解
- 蛇形填数
- LeetCode 题解(51): Flatten Binary Tree to Linked List
- 位运算实现 十进制(正负)转换成二进制
- 开始程序猿成长之路
- 今天给神州飞天UI41R D2装系统
- 视觉设计:如何做好App的引导页?
- 判断点是否在多边形内
- 开源飞控OpenPilot的扩展卡尔曼滤波EKF学习笔记(二)
- 去哪儿面试题
- 排序之堆排序
- oracle本地索引和全局索引整理及效率对比