中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-31 21:18
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » set/a里的位运算怎么用? 查看 7,269 回复 42
31 发表于 2006-10-19 21:24 ·  中国 甘肃 兰州 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
还看的晕忽忽
32 提供关于BASE64编码的资料 发表于 2006-10-20 00:18 ·  中国 湖北 武汉 电信
版主
★★★★★
积分 11,386
发帖 4,938
注册 2006-07-23 17:10
20年会员
UID 59080
状态 离线

  算出了base64转换后的编码之后,还要与相关的字符对应:

A ----------- 0
B ----------- 1
C ----------- 2
D ----------- 3
E ----------- 4
F ----------- 5
G ----------- 6
H ----------- 7
I ----------- 8
J ----------- 9
K ----------- 10
L ----------- 11
M ----------- 12
N ----------- 13
O ----------- 14
P ----------- 15
Q ----------- 16
R ----------- 17
S ----------- 18
T ----------- 19
U ----------- 20
V ----------- 21
W ----------- 22
X ----------- 23
Y ----------- 24
Z ----------- 25
a ----------- 26
b ----------- 27
c ----------- 28
d ----------- 29
e ----------- 30
f ----------- 31
g ----------- 32
h ----------- 33
i ----------- 34
j ----------- 35
k ----------- 36
l ----------- 37
m ----------- 38
n ----------- 39
o ----------- 40
p ----------- 41
q ----------- 42
r ----------- 43
s ----------- 44
t ----------- 45
u ----------- 46
v ----------- 47
w ----------- 48
x ----------- 49
y ----------- 50
z ----------- 51
0 ----------- 52
1 ----------- 53
2 ----------- 54
3 ----------- 55
4 ----------- 56
5 ----------- 57
6 ----------- 58
7 ----------- 59
8 ----------- 60
9 ----------- 61
+ ----------- 62
/ ----------- 63
33 发表于 2006-10-20 00:55 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
各路高手亮本事的时候到了

base64编码用处还是蛮多的,比如说eml文件、批处理内嵌bin等

[ Last edited by electronixtar on 2006-10-20 at 01:08 ]

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
34 发表于 2006-10-20 07:19 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
35 发表于 2006-10-20 10:32 ·  中国 北京 联通
金牌会员
★★★★
积分 2,902
发帖 1,147
注册 2006-09-21 12:00
19年会员
UID 63324
性别 男
状态 离线
Originally posted by lxmxn at 2006-10-19 07:04:

  多谢est兄写了关于位运算的帖子。

  但是没有写出这位运算到底有哪些方面的应用,提不起大家对位运算的兴趣。大家只知遠...



这个主意好~:)
写些能让大家感兴趣又实用的位运算的例子来~:)
又聚人气又为开发打基础又增加了知识范围~:)
    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
36 发表于 2006-10-20 21:57 ·  中国 四川 成都 教育网
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
20年会员
UID 42173
性别 男
状态 离线
说实话,我是直接把其他语言里的位运算照搬过来改成 set /a 的。真的没什么写头。

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
37 ``` 发表于 2007-08-19 11:53 ·  中国 湖南 怀化 电信
初级用户
积分 25
发帖 19
注册 2007-03-07 10:51
19年会员
UID 80997
性别 男
状态 离线
`
38 发表于 2007-08-19 12:14 ·  中国 北京 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
//////
写,我们期待着。
39 发表于 2007-08-22 23:30 ·  中国 湖南 长沙 电信
新手上路
积分 7
发帖 3
注册 2005-12-02 13:02
20年会员
UID 46335
状态 离线
hehe ,说道心里去了
40 发表于 2008-03-02 23:33 ·  中国 陕西 西安 电信
银牌会员
★★★★
钻石会员
积分 2,278
发帖 1,020
注册 2007-11-19 13:34
18年会员
UID 103127
性别 男
状态 离线
41 发表于 2008-03-03 10:53 ·  中国 上海 黄浦区 电信
中级用户
★★
积分 484
发帖 250
注册 2007-06-05 23:33
19年会员
UID 90372
性别 男
状态 离线
楼主啊,你得先弄懂10进制2进制转化啥的啊

我举几个简单例子说明CMD下的位操作吧
set /a 13^<^<1
结果是26,因为13的二进制是1101,左移1位就相当于在二进制末尾加一个0,就是11010,也就是26了。
set /a 13^>^>1
结果是6,1101去掉末位1后,为110,也就是10进制6了

同样
set /a 13^<^<2为52
set /a 13^>^>2为3

再说按位与&
按位与的意思是转化成二进制后,位对应进行逻辑与操作的结果,与操作的算法是全1则1,否则0.
set /a 13^&11
结果是9
因为1101&1011,中间两位各有一0,只有首尾两位都是1,所以是1001了,也就是10进制9了

明白位操作是位对应操作了,就不用再赘述异和或了,只说下异及或的算法

异又称异或(对应的有同或),算法是相同的两数操作得0,不同得1,也就是0^1=1,1^1=0,0^0=0。
而或操作呢,是全0则0,也就是0|1=1,1|1=1, 0|0=0了
42 发表于 2009-04-23 12:42 ·  中国 福建 福州 电信
初级用户
积分 20
发帖 18
注册 2008-12-07 15:40
17年会员
UID 133147
性别 男
来自 浙江永康
状态 离线
@echo off
set b=0
for /l %%a in (1,1,100) do set /a b=b+%%a>>nul
echo 一加到一百等于:%b%
pause>nul
高手们:
set /a a=00000010 "<<" 2 是什么意思啊?
43 发表于 2010-06-26 10:34 ·  中国 四川 成都 电信
新手上路
积分 19
发帖 20
注册 2010-05-09 20:11
16年会员
UID 166476
性别 男
状态 离线
稀里糊涂的
论坛跳转: