位运算的是不是类似这样: | @echo off&setlocal enabledelayedexpansion | | set /p "number=请输入一个整数:" | | set /a flag=1,num=0 | | set /p=!number!=<nul | | for /l %%i in (1 1 31) do ( | | set /a a="!number! & !flag!" | | if !a! equ 1 set /a b="1<<!num!" & set /p=!b!+<nul | | set /a num+=1,"number>>=1" | | ) | | set /p= <nul & echo. | | pause>nulCOPY |
只能计算2*31-1(2147483648)以内的数,没考虑负数,对于负数按补码算倒不如当成正数算,最后再加个负号。
[ 本帖最后由 lhjoanna 于 2009-3-22 01:01 编辑 ] |