【C/C++】十进制(正负)与二进制(正负)互相转换的方法技巧:短除法、取反、按位乘……
十进制 转 二进制
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}2n−1,将乘积相加
【例】将二进制数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 绝对值二进制 绝对值十进制 十进制负数