如何把二进制数化成十进制数_二进制数按位进行逻辑运算

首先要理解整数在机器内是如何用补码表示的:原码、补码、反码

按位运算,就是对一个数(常量或变量)的二进制位与另一个数的对应二进制位进行运算

位运算有:

& 位逻辑与,1&1等于1,1&0等于0,0&1等于0,0&0等于0

| 位逻辑或 ,1|1等于1,1|0等于1,0|1等于1,0|0等于0

^ 位逻辑异或 ,两个二进制位不同,结果为1,否则为0

~ 求反, 使一个数(常量或变量)的每一位变反,即0变1,1变0

>> 右移, 对一个数(常量或变量)的每一位右移

<< 左移, 对一个数(常量或变量)的每一位左移

例2.7.1 按位运算

#include <iostream>
using namespace std;
int main()
{
	short int  a,b,c;
	a=11;               //a的二进制表示 00000000  00001011
	b=39;               //b的二进制表示 00000000  00100111
	c=-23;              //c的二进制表示 11111111  11101001
	cout<<(a&b)<<endl;  //   a&b的结果  00000000  00000011
	cout<<(a|b)<<endl;  //   a|b的结果  00000000  00101111
	cout<<(a^b)<<endl;  //   a^b的结果  00000000  00101100
	cout<<(~a)<<endl;   //   ~a的结果   11111111  11110100
	cout<<(c>>2)<<endl;  // c>>2的结果  11111111  11111010
	cout<<(a<<2)<<endl;  //左移一位相当于乘2运算,这里左移了2位	
	return 0;
}

6723e4543ac538cb172776da891730a5.png
程序运行的输出结果

计算机内,整数是用补码表示的,能理解补码,就能解读程序的输出结果。

3a300d5f990f26e3d73d916f74ca03d1.png

移位运算实现整型变量a乘2(a<<2)或除2(a>>1)运算,效率比a*2或a/2运算高。

看看高手是如何活用位运算的

god-jiang:神级运算——位运算​zhuanlan.zhihu.com
908dfa91ea3d4caef44298c328c8b1af.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值