一.十转二 进制
进制问题,主要需要将 数 % 要去的进制。/= 要去的进制。余数分别*自己的进制 N次方。
十转二,二转十
cpp
int TtoB(int v)
{
int result = 0;
int Ten = 1;
while (v != 0)
{
int d = v % 2;
result += d * Ten;
Ten *= 10;
v /= 2;
}
return result;
}
cpp
int BtoT(int v)
{
int result = 0;
int Two = 1;
while (v != 0)
{
int d = v % 10;
result += d*Two;
Two *= 2;
v /= 10;
}
return result;
}
二.位运算 实现 变量互换
这里主要使用异 运算符。每一个位 通过
A ^= B;
B ^= A;
A ^= B;
都能实现互换 1变为0. 0变为1
cpp
int A = 0;
int B = 1;
//1^0 = 1
//0^0 = 0
//1^0 = 1
//1^1 = 0
A ^= B;
B ^= A;
A ^= B;
std::cout << A;
std::cout << B;
三.算数平方根
通过不断逼近,直道误差小于某一个值。
cpp
double Sqrt(double value) // 平替 UE的 FMath::Sqrt
{
double ApproachValue = 1.0; //误差值 精度
double Approach = 0;
double SaveApproach = 0;
do
{
Approach += ApproachValue;
if (Approach * Approach < value)
{
Approach += ApproachValue;
}
else
{
SaveApproach = Approach; //保存当时的 接近值
Approach -= ApproachValue;//回退
ApproachValue /= 10.0; //逼近
}
} while (ApproachValue > 0.000001);
return (Approach + SaveApproach) / 2.0;
}
printf("%f", sqrt(100));