位运算 - 二进制快速转十进制

二进制

在这里插入图片描述

如果你是搞网络的,我觉得你一定要记住以下几种二进制数的转换值。
你是一个网络工程 师,当看到一串二进制数时,你不要告诉我你会拿出笔纸或掰手指算半天才知道它转化成十进制的数值。
要想快,那就记下下面几种常见的二进制--十进制转换:

以8位 来演示:

1.第一种:


0000 0001      1

0000 0010      2

0000 0100      4

0000 1000      8

0001 0000      16

0010 0000      32

0100 0000      64

1000 0000      128


2.第二种:

0000 0001      1

0000 0011      3

0000 0111      7

0000 1111      15

0001 1111      31

0011 1111      63

0111 1111      127

3.第三种:

1000 0000     128

1100 0000     192

1110 0000     224

1111 0000     240

1111 1000     248

1111 1100     252

1111 1110     254

举个例子:  1110 1011     


                  可分为:

                  1110 0000(上面第三种类型)   224

                  0000 1000(上面第一种类型)   8

                  0000 0011(上面第二种类型)   3

我们通过记住上面三种类型的转换,再用加 法(加法口算你会吧)立即得到结果:235


==================================================================================


方法二:

熟记以下排列,其实很Easy了,从右往 左,依次是前一个数的2倍:

256      128      64       32      16      8        4         2         1


随便写个数字比如48

48 = 32 + 16,所以在3216所在的位置为1,其余为0,
转为2进制就是

256  128  64  32  16  8   4   2   1

0      0       0    1    1   0   0   0   0

98 = 64 + 32 + 2
转为2进制就是
256  128  64  32  16  8   4   2   1
0    0    1   1    0  0   0   1   0

510 = 256 + 128 + 64 + 32 +16 + 8 + 4 + 2
转为2进制就是
256  128  64  32  16  8   4   2   1
1     1    1   1   1  1   1   1   0

二进制转十进制就更简单了,

比如随便写的一串 01111101

先写上 :  0         1           1         1         1         1          0          1

然后填充 128      64        32       16        8          4          2          1



十进制为 64+32+16+8+4+1=125

位运算

&

3 & 5 = 1

将3 5转为二进制进行计算
3 ⇒ 0000 0011
------------------------------>0000 0001
5 ⇒ 0000 0101
相同的二进制位同时位1,才等于1

|

3 | 5 = 7

将3 5转为二进制进行计算
3 ⇒ 0000 0011
------------------------------>0000 0111 == 4 + 2 + 1
5 ⇒ 0000 0101
相同的二进制位有一个为1则为1

^

3 ^ 5 = 6

将3 5转为二进制进行计算
3 ⇒ 0000 0011
------------------------------>0000 0110 == 4 + 2
5 ⇒ 0000 0101
相同的二进制位相同为0,不相同为1

~

~3 = -4

按位取反
~x = -(x + 1)

<<

左移
5 << 2 = 20
-5 << 2 = -20 负数的二进制表示

转为二进制左移2位

>>

右移
5 >> 2 = 1
-5>> 2 = -2 负数的二进制表示

转为二进制右移2位
5⇒ 0000 0101⇒ 右移两位⇒ 0000 0001
-5==> 原码 -> 反码 -> 补码得到⇒ 11111011 ⇒右移 10000010⇒ -2

>>>

忽略符号右移,右移后均为正数

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值