二进制与十进制互相转换的计算方法(个人向)

先理解什么是二进制

二进制(binary)是在数学和数字电路中指以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示 [1] 。数字电子电路中,逻辑门的实现直接应用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制。每个数字称为一个比特(Bit,Binary digit的缩写)

以上来源于百度百科

做个例子
1 ,7,26,89,131,231

先将上面的数字计算出二进制

1-> 00000001
7-> 00000111
26-> 00011010
89-> 01011001
131->10000011
231->11100111

个人理解

十进制转二进制:


拿到十进制的数之后 先考虑这个数是否大于某个2^n的数 若是 那么这个n就是后面跟的0的个数 比如26 
26大于2^4(记住考虑至多的那个次方数) 那么可以先写出对应的2^4的二进制数:10000 
之后拿26-16=10 这时候再算出10对应的次方数 也就是2^3的二进制数:1000
现在还剩下2 我自己的理解得出了以下结论
1.若十进制数大于等于2小于4 那么就在倒数第二位补1
2.若十进制小于2那么 就在末尾补 1 可理解为20次方 最大为1 不补就是0

所有得2^1的二进制数:10
综上所有的二进制数:11010也就是对应的十进制数26

二进制转十进制

二进制转十进制实际就是逆向工程
比如1011001 它后面跟着6位数 说明它大于2^6那么先得出二进制数1000000=64
然后计算 11001 它后面跟着4位数 说明它大于2^4那么得出二进制数10000=16
再计算1001 它后面跟着3位数 说明它大于2^3那么得出二进制数1000=8
最后只剩下1 同上面得出的结论 1就是2^0也就是1=1
将上面数字相加就是64+16+8+1=89也就是我们开头第四个计算的十进制数字

不用思考为什么最前面0 只是为了转换方便 也可以省略不写
例如:
00001011001和 1011001 没`在这里插入代码片有任何的区别只是写法不同

后续有机会 会更新JAVA位运算的计算方式和优化模运算的文章

猜你喜欢

转载自blog.csdn.net/weixin_42469135/article/details/117002902