二进制和十进制的转换and位运算

数码:使用的数字符号 比如 十进制的1 2 3 4 5 6等。二进制的 0 1
基数: 每个进制的基数 比如十进制是10 二进制是2
二进制的位权:固定位置对应的单位值。比如一个数字从右往左从0开始递增

1.将二进制数转换成十进制
转换规则: 展开位权进行求和运算
100110

1x2^5+0x2^4+0x2^3+1x2^2+1x2^1+0x2^0
1x32+0x16+0x8+1x4+1x2+0x1
32+0+0+4+2+0
结果=38

2.将十进制转换为二进制
转换规则:除2取余直至运算结果为0,将余数倒叙排列
29/2=14 余数1
14/2=7 余数 0
7/2=3 余数1
3/2=1 余数1
1/2=0 余数1
最后将余数倒叙排列为:11101

3.位运算
开头的符号位:0 为整数,1为负数

1)按位&运算
定义:参加运算的两个数,按二进制位进行 & 运算(两个数都为1则结果为1)
规则: 1&1=1,1&0=0,0&1=0,0&0=0
示例: 14&3 先换算成二进制即 0000 1110 & 0000 0011 得 0000 0010
结果是整数2,因此 14&3=2
特点:清零特定位,获取特定位
2)按位或运算:|
定义:参加运算的两个数,按二进制位进行或运算(有一个为1,则结果为1)
规则: 1|1 =1,1|0=1,0|1=1,0|0=0
示例: 14 | 3 换算成二进制即 0000 1110 | 0000 0011 得 0000 1111
结果是整数15,因此14 | 3 = 15
特点: 将特定位设为1
3)按位异或操作:^
定义: 参加运算的两个数,按二进制位进行异或运算(两个数不相同,则结果为1)
规则: 1^1=0, 1^0=1,0^1=1,0^0=0
示例: 14^3 换算成二进制 即 0000 1110 ^ 0000 0011 得 0000 1101
结果是整数13,因此 14 ^ 3 = 13
特点: 与自身异或得0,与同一个数连续异或得自身
4)按位取反运算 ~
定义: 对一个二进制数按位取反
规则: ~1=0, ~0=1
示例:~14 换算成二进制 即 ~0000 1110 得 1111 0001
结果是整数-15,因此 ~14 = -15

4.左位移运算:<<
定义:将一个二进制数向左移动对应的位数
规则: 符号位不变,右侧低位补0,左侧高位舍弃
示例: 14 << 1 换算成二进制 即 0000 1110 << 1 得 0001 1100
结果是整数28 因此 14 <<1 = 28
特点: m<<n 等价于 mx2^n
5.右位移运算:>>
定义: 将一个二进制数向右移动对应的位数
规则: 符号位不变,右侧低位舍弃,左侧高位 正数补0,负数补1
示例: 14 >> 1 换算成二进制 即 0000 1110 >> 1 得 0000 0111
结果是整数7,因此 14 >> 1 = 7
-14 >> 2 即 1111 0010 >> 2 得 1111 1100
结果是整数-4,因此-14>>2=-4
特点:m>>n 等价与m/2^n (低位为1时,精度会丢失)
6.无符号右位移运算:>>>
规则:右侧低位舍弃,左侧高位补0 (不同位数 负数的结果不同)
正数和右位移运算没有区别
示例: -14>>>2 即 1111 0010 >>> 2 得 0011 1100
结果是整数60,因此 14 >>> 2 = 60
示例: -14>>>2 即 1111 1111 1111 0010 >>> 2
得 0011 1111 1111 1100 结果是整数16380

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值