计算二进制(bin)10101010等于负几你要花多长时间?

来源:互联网 发布:电脑录视频软件 编辑:程序博客网 时间:2024/04/29 16:29

先说一般的计算方法。计算机相关专业(嘿嘿本人就是那个相关)的人都知道,大致应该这样计算:

  1. 去掉符号位

    (b)10101010>(b)00101010

  2. 低7位取反

    (b)00101010>(b)01010101

  3. 加1

    (b)01010101>(b)01010110

  4. 二进制->十进制

    (b)01010110>64+16+4+2=86

结果是-86. 你用了多长时间呢?


上述计算中用到了二进制转十进制,求补码,如果再加上十进制转二进制运算,基本上可以涵盖编程时遇到的大部分相关计算。


如果上网去搜的花,光篇幅就会吓到你。


其实可以通过十六进制+简单的乘除法大大提高运算速度。


地球上的程序员应该都知道,二进制,十六进制,十进制各数字的关系如下:


二进制         十六进制           十进制

0000             0                       0

0001             1                       1

0010             2                       2

0011             3                       3

0100             4                       4

0101             5                       5

0110             6                       6

0111             7                       7

1000             8                       8

1001             9                       9

1010             A                      10

1011             B                      11

1100             C                      12

1101             D                      13

1110             E                      14

1111             F                      15


我们就利用上面的对应关系来加快计算速度。


二进制转十进制

1.先将二进制转换成十六进制

(b)10101010->(h)AA

2.将十六进制转换成到10进制。

(hex)AA>10x16+10=170


十进制转二进制

  1. 十进制转成十六进制(用16除)

    170=16x10+10>(hex)AA

  2. 十六进制转二进制

    (h)AA->(b)10101010


求补码

我们已经知道(bin)10101010就是170,用256-170得到86,而-86就是(bin)10101010被看作8位有符号数时的值。


如果16位求补码就用65536做被减数。以此类推。


是不是很帅?


计算二进制(bin)10101010等于负几你要花多长时间?


更多最新文章请扫码关注【面向对象思考】公众号


1 0
原创粉丝点击