详解二进制和十进制的转换

十进制转换二进制#

拆分法#

将十进制整数拆分为若千个二进制权重的和,有该权重下面写 1,否则写 0。
权重等于 10^1~n 次方
拆分出来必须是权重中的数字!

正十进制转换为二进制

求 45 的二进制

# 权重
1 2 4 8 16 32 64 128 ...

1. 45           最近的权重为 32
2. 45 - 32 = 13 权重为 8
3. 13 - 8  = 5  权重为 4
4. 5  - 4  = 1  的权中为 1

45 => 32, 8, 4, 1

有该权重下面写1,否则写0。
1 2 4 8 16 32 64 128 ...
1 0 1 1 0  1  0   0
逆向排序可得二进制为 0010 1101

负十进制转换为二进制

先将十进制的绝对值转换为二进制,然后进行按位取反再加1
负数的需要补码:按位取反,再加1
求-45的二进制

1.将-45的绝对值转换为二进制:0010 1101
2.按位取反(通俗来说就是 0 变成 1,1 变成 0)
0010 1101 按位取反  1101 0010
3.在末尾加上 1,得 1101 0011 (如果末尾已经是 1 则需要进位)

验证:
45  -45 互为相反数 所以 -45 + 45 = 0
45  => 0010 1101
-45 => 1101 0011
运算:
 0010 1101
 1101 0011 +
 ——————————— =
1 0000 0000
1 高位溢出舍弃了 最后结果为 0000 0000 = 0

除 2 取余法#

使用十进制整数不断地除以 2 取出余数,直到商为 0 时将余数逆序排序。

转换 45 为二进制

45 / 2 = 22 ... 1
22 / 2 = 11 ... 0
11 / 2 = 5  ... 1
5  / 2 = 2  ... 1
2  / 2 = 1  ... 0
1  / 2 = 0  ... 1
将余数逆向排序可得:10 1101

二进制转换为十进制#

加权法#

使用二进制中的每个数字乘以当前位的权重再累加起来。
权重等于 10^n~1次方
加权必须是权重中的数字!
与正十进制转换二进制 拆分法是互逆的

正二进制转换为十进制

转换 11 0010 为十进制

逆向可得 01 0011

# 权重
1 2 4 8 16 32 64 128 ...
0 1 0 0 1  1  0  0
可得 2 + 16 + 32 = 50

11 0010 的二进制为 50

也可以记为(由 0 位开始)
0 * 2^0 + 1 * 2^1 + 0 * 2^2 + 0 * 2^3  + 1 * 2^4  + 1 * 2^5
0 + 2 + 0 + 0 + 16 + 32 = 50

因为 0 乘任何数都得 0,则可简化为
2^1 + 2^4 + 2^5 = 2 + 16 + 32 = 50

负二进制转换为十进制

转换 1101 0011 为十进制

1.先减1:得1101 0010
2.按位取反:0010 1101
3.使用加权法
posted @   白日醒梦  阅读(1147)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
主题色彩