回想以前学汇编的时候不知道为什么总是过一段时间就忘记进制转换的方法
大概是学得不知所以然吧
最近回顾一下这些知识,并思考了一下原理

二进制转十进制
例子:
二进制数1001B=1*2^0 + 0*2^1 + 0*2^2  + 1*2^3=1 + 8 =9

原理:
一个十进制数632可以表示成
=600    + 30     + 2
=6*10^2 + 3*10^1 + 2*10^0
=632
同理一个二进制数11011可以表示成
 10000+ 1000+  000   + 10    +1
=1*2^4+ 1*2^3+ 0*2^2 + 1*2^1 +1*2^0
=16   + 8    + 0     + 2     +1
=27

十进制转二进制
A=a(2^0)+b(2^1)+c(2^2)+d(2^3)+e(2^4) (后面的和不正是化十进制的过程吗)
现在假设该数未化为二进制,除以基数2得
A/2=a(2^0)/2+b(2^1)/2+c(2^2)/2+d(2^3)/2+e(2^4)/2
这时候由于a(2^0)/2这条式不可能被整除,而其他项式又肯定是能被整除的。所以a(2^0)必须被余下来,也就是a必须被余下来
(因为a和a(2^0)总是相等的),那么这样就可以从余数a窥知第一个二进制位了
商得:
b(2^0)+c(2^1)+d(2^2)+e(2^3),再除以除以基数2余下了b,以此类推。
当这个数不能再被2除时,先余掉的a位数在原数低,而后来的余数数位高,所以要把所有的余数反过来写。正好是edcba

技术
©2019-2020 Toolsou All rights reserved,
Qt学习2——.pro文件和.h文件介绍LinkedHashMap基本用法&使用实现简单缓存pytorch之ResNet18(对cifar10数据进行分类准确度达到94%)华为Mate 40 Pro+ 5G曝光:徕卡电影镜头、陶瓷机身统计字母个数(java语言实现)JavaScript中的 Call 和 Apply1190 反转每对括号间的子串 leetcode记一次EventBus内存泄露导致的项目问题浅谈uni-app页面传值问题 Chrome OS,对程序员和Windows意味着什么?,互联网营销