玄机论坛-专业的C#交流论坛 交流QQ群: 16885911如有疑问,请加入官方群询问
您需要 登录 才可以下载或查看,没有帐号?关闭注册
x
常用地方: Socket做数据传输(硬件/软件) 蓝牙,红外.. 起因就是老段去面试,然后遇见一个这样的面试题, 这个关于socket的自定义协议与数据解析,会在高级篇的Socket为大家详细讲解. 如果你明白其中的道理那很简单,第一次接触的话可能就看不懂了. 今天用到的知识是 位移
最简单的去杂波的算法: 大家都知道空气中传播数据的时候都是有波段的 来个波段图 傅里叶变换 是个数学公式.在应用的领域很多的. 刚才那种只是个很简单的图,但是实现起来确非常不简单….下面讲下老段这个. 老段的面试题
这种有固定格式,很好分析. 首先,记下来他们的二进制值 计算器,点击查看,选择程序员计算器.也可以快捷键.Alt+3.
这一排标示字(bit) 这里可以控制显示
0001 0000 0001 0001 记下10和11的2进制信息.咱们来猜一下感觉怎么样才能变成22 0001 0000 10 0010 0010 11 是不是11 向左 – 0 然后尾巴上补一个0就行了. 0010 0010 22 根据10(0001 0000) 11(0001 0001) -> 22(0010 0010) 10 10 这个不用推了吧.就是10 推导公式 常数1、10 常数2、11 常数1的第4位为1 那么将常数2向左移动1位得出结果22 从右向左.0开始计数和.net一样吧 43210 0001 0000 Int I = 10; int x = 11; Res =X<<8(bit) 计算器上怎么用呢 LSH 左移, RSH右移 第一组公式推出来了.下面是代码判断某个位数上的是0还是1 //转2进制 [mw_shl_code=csharp,true]Convert.ToString(x, 2)
写个方法判断位数上的0还是1
/// <summary>
/// 返回字节中指定bit位的值:1 或 0
/// </summary>
/// <param name="pStatus">判断的参数</param>
/// <param name="pPos">第几位</param>
/// <returns></returns>
public static byte GetPositionBit(UInt32 pStatus, int pPos)
{
//转换高低字节
UInt32 a = (UInt32)(1 << (pPos + 1));
UInt32 b = (UInt32)(1 << pPos);
if (pStatus % a >= b)
{
return 1;
}
else
{
return 0;
}
}[/mw_shl_code] 下面推第二个 还是一样.记下他们的二进制表示 0100 0000 0100 1000 0000 0100 X = 10(0001 0000) y =12(0001 0010) Z=4(0000 0100) 算了都被看见了…我直接说吧. 对于这种,常数1 和常数2在高位相同,低位少许不同的时候, 0010 高 0000 低 而结果值只在低位显示的时候 那么一般会让他们同时向左移动1位. 然后两个常数相减.显然是y-x 千万不能这么算.直接去操作加减了.一定要记得还得位移. 代码可以写成 Res=((y<<8)-(x<<8)) 也可以是(y-x)<<8
推导这个公式的时候不能单纯的用位移了. 先将y左移1位,然后减去x左移一位 Y<<8 = 24 x<<1=20 Res=((y<<8)-(x<<8)) 结果就是0x4
这就是推导公式.如何带入到图里. 1位等于8个bit
计算的时候得这么算 先去除 20 23 剩余 01 10 12 10 10 14 23 10 12 22 开始做比较 01 10 没有算法那就保留数据 10 12 ->04 12 10 ->也保留,也可以不保留.如果解密的函数很严格,就是 一个10 然后一个12 才解4 那么久不能转换 先用?代替 10 10 10 14 14 23 10 12 01 10 04 10 14 14 23 04 12 22 看它解密的数据 01 04 10 14 23 04 22 咱们多了个10 ,14 12 都是多出来的.那么说明不是这样判断的.先假定他判断的方法再算一遍 然后 01 10 12 10 10 14 23 10 12 22 01 10 01 10 12 04 12 10 ? 10 10 10 10 10 14 14 14 23 23 23 10 10 12 04 12 22 01 04 10 14 23 04 22 得出的结果现在就推算完了.至于后续的演算部分就是参照给出的解密过程来忽略比如23 10 为啥得到了一个23 10 14 为啥得到了一个14 不给你们答案,自己按照思路去推算,你会发现有一样的东西,然后自己还可以推出来一条计算公式 Xx oo => xx Have Fun .. 再见… 2015-4-13 15:52:08 配套视频地址:
链接:http://pan.baidu.com/s/1pJyYtQV 密码:btaf
|