C语言——二进制和位运算

二进制和位运算

进制转换

1.进制介绍

(1)二进制:0,1,满二进一,C语言中没有二进制常数的表示方法

(2)十进制: 0-9,满10进一

(3)八进制:0-7,满8进1,以数字0开头表示

(4)十六进制:0-9及A-F,满16进1.以0x或0X开头表示,此处A-F不区分大小写

[A->10 B->11 C->12 D->13 E->14 F->15]

如:0x21AF+1 = 0x21B0

image-20221018213004095

image-20221018213023155

2.其它进制转十进制

(1)二进制转十进制

规则:从最低位开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。

二进制 1010 = 0*2^0+1*2^1+0*2^2+1*2^3=10
(2)八进制转十进制

规则:从最低位开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。

0123 = 3*8^0+2*8^1+1*8^2=3+16+64=83
(2)十六进制转十进制

规则:从最低位开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。

034A=10*16^0+4*16^1+3*16^2=842

2.十进制转其他进制

(1)十进制转二进制

规则:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

(2)十进制转八进制

规则:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

(3)十进制转十六进制

规则:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制。

3.二进制转其它进制

(1)二进制转八进制

规则:从低位开始,将二进制数每三位一组,转成对应的八进制即可

image-20221019152542005

(1)二进制转十六进制

规则:从低位开始,将二进制数每四位一组,转成对应的八进制即可

image-20221019152923109

3.其它进制转二进制

(1)八进制转成二进制

规则:将八进制每1位,转成对应的一个3位的二进制即可

0237 = 10011 111

(2)十六进制转成二进制

规则:将十六进制每1位,转成对应的一个4位的二进制即可

image-20221019154241614

位运算

1.原码,反码,补码

  1. 二进制的最高位是符号位**: **0表示正数,1表示负数
  2. 正数的原码,反码,补码都一样 (三码合一)
  3. 负数的反码=它的原码符号位不变,其它位取反(0->1,1->0)
  4. 负数的补码=它的反码+1 //
  5. 0的反码,补码都是0
  6. 在计算机运算的时候,都是以补码的方式来运算的.

2.位运算符介绍

image-20221019160117623

image-20221019164724537

image-20221019164815410

验证
#include <stdio.h>

int main(){
	int a = ~2;
	int b = 2&-3;
	int c = -1<<2;
	printf("a=%d b=%d c=%d",a,b,c);
	getchar();
}

image-20221019165041145

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值