位运算的是不是类似这样:- @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>nul
复制代码 只能计算2*31-1(2147483648)以内的数,没考虑负数,对于负数按补码算倒不如当成正数算,最后再加个负号。
[ 本帖最后由 lhjoanna 于 2009-3-22 01:01 编辑 ] |