[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
<P>很热闹,那晚辈再补充些吧...<BR>平时触及到的不多,就说几个有可能用到的。(~ ! ^)</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>~ 按位取反<BR>例如:<BR>set /a num=~16&nbsp; 结果为-17<BR>set /a num=~-30&nbsp; 结果为29<BR>原理与二进制中的反码和补码等有关。<BR>在这里只给出计算公式[ ~X=-(X+1) ]<BR>“~X”可理解为,获得得小于X相反数的最大整数。</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>! 逻辑非<BR>例如:<BR>set /a num=!0 结果为1<BR>set /a num=!1 结果为0<BR>而当n非零时,!n均得到0。<BR>特别地:<BR>set /a flag=!flag 得到flag=1<BR>再执行一次上句,得到flag=0<BR>再执行一次便得到flag=1<BR>。。。依此类推。利用它的周期性可以用作某过程的开关,来标志执行情况。</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>^ 异或<BR>这是对于二进制而言的按位计算。异或的计算法则是“同假异真”。<BR>例如:<BR>左边是十进制数,右边是二进制数。<BR>52=(110100)2<BR>39=(100111)2<BR>则set /a num=52^^39&nbsp; 结果为19<BR>为什么呢?<BR>按照“同假异真”的法则:<BR>110100<BR>100111<BR>-----------<BR>010011<BR>而(10011)2正是19。</P>
<P>计算发现,反过来19异或39等于52。可见这种运算具有可逆性。<BR>于是可以利用它的可逆性做一个简单的加密解密的批处理。</P>
<P>&nbsp;</P>
<P><BR>@echo off<BR>set /p func=加密按1,解密按2:<BR>goto t%func%<BR>:t1<BR>set /p pwd=输入数字密码(8位内):<BR>set /a code=(pwd^&lt;^&lt;2)^^43690<BR>echo %code%<BR>pause&amp;exit<BR>:t2<BR>set /p code=输入数字密文:<BR>set /a pwd=(code^^43690)^&gt;^&gt;2<BR>echo %pwd%<BR>pause&amp;exit</P>

[ 本帖最后由 梦想种子 于 2008-3-30 16:18 编辑 ]
1

评分人数

静水流深...

TOP

返回列表