快速十进制与二进制的互转

2023-07-11 19:39:00

 

快速十进制与二进制的互转

正数十进制转二进制

首先记住一个大概长度的次幂表:2^72^62^52^42^32^22^12^01286432168421

2. 然后将需要换算的数值进行拆分

3. 最后在对应数字上标志1,没有的标记0,有点抽象,实例一下子就懂了

例子:5 转 二进制

5 = 2^0 + 2^2即 2^0 和 2^2 下方为 1 其余为 0则以8位的表示则为:000001012^72^62^52^42^32^22^12^0128643216842100000101

反推二进制就返回来就是了:

次幂下方是1的 直接相加:2^2 + 2^0 = 5

负数的二进制转换:

换算成源码,源码就是数值绝对值的二进制反码,源码取反,也就是0变1,1变0补码,即低位+1得到负数二进制

例子:-5 转 二进制

源码:00000101反码:11111010补码:11111011

所以 -5 的二进制就为 11111011

小数的二进制转换:

十进制的小数转换为二进制,主要是小数部分乘以2,取整数部分依次从左往右放在小数点后,直至小数点后为0。注意:会存在一直小数点后不为0.

例如:十进制的0.125,要转换为二进制的小数。

小数部分0.125乘以2,得0.25,然后取整数部分0。再将小数部分0.25乘以2,得0.5,然后取整数部分0。再将小数部分0.5乘以2,得1,然后取整数部分1。则得到的二进制的结果就是0.001。

异或运算 ^

相同的为0,不同的为1,满足交换律 a ^ b ^ c = c ^ a ^ b,可以用来两个数交换 a ^ b ^ a = b,a ^ b ^ b = a
int a =5,b = 6; //5二进制:0101 //6二进制:0110 int a ^ b = 3; // 3二进制为:0011 //例子:再不申请新的存储空间的前提实现两个数交换,根据 a ^ b ^ a = b 实现 int num1 = 4,num2 = 5; num1 = num1 ^ num2;// 4^5 mum2 = num1 ^ num2;//4^5^5 = 4 num1 = num1 ^ num2;//4^5^4 = 5


以上就是关于《快速十进制与二进制的互转》的全部内容,本文网址:https://www.7ca.cn/baike/51612.shtml,如对您有帮助可以分享给好友,谢谢。
标签:
声明

排行榜