> 文章列表 > 【C/C++】十进制(正负)与二进制(正负)互相转换的方法技巧:短除法、取反、按位乘……

【C/C++】十进制(正负)与二进制(正负)互相转换的方法技巧:短除法、取反、按位乘……

【C/C++】十进制(正负)与二进制(正负)互相转换的方法技巧:短除法、取反、按位乘……

导读:二进制数最高位为符号位,0表示正数、1表示负数


十进制 转 二进制

1、正数:短除法,然后将所有0、1从上到下连起来从右至左摆放,不够八位数的左边补0

【例】将十进制数60、13转为二进制:

2 |60‾\\underline{\\text{60}}60                              2 |13‾\\underline{\\text{13}}13
 2 |30‾\\underline{\\text{30}}30 ······ 0                   2 |6‾\\underline{\\text{6}}6 ······ 1
  2 |15‾\\underline{\\text{15}}15 ······ 0                   2 |3‾\\underline{\\text{3}}3 ······ 0
   2 |7‾\\underline{\\text{7}}7 ······ 1                        1 ······ 1
    2 |3‾\\underline{\\text{3}}3 ······ 1
        1 ······ 1
      00111100                     00001101

2、负数:绝对值转换为二进制,然后取反再加1

【例】将十进制数-60转为二进制:

   60 —→ 00111100 → 11000011 —→ 11000100
绝对值      60二进制      按位取反   +1   -60二进制


二进制 转 十进制

1、正数:从右至左每个数字依次乘以2n−12^{n-1}2n1,将乘积相加

【例】将二进制数00001101转为十进制:

0      0      0     0      1      1      0     1
x272^727  x262^626  x252^525  x242^424  x232^323  x222^222  x212^121  x202^020
—————————————————
0  +  0  +  0  +  0  +  8  +  4  +  0  +  1  = 13

2、负数:按位取反再加1,然后转为十进制,最后添上负号

【例】将二进制数11000100转为十进制:

 11000100 → 00111011 ——→ 00111100 ———→ 60 ———→ -60
二进制负数     按位取反    +1   绝对值二进制   绝对值十进制   十进制负数