为什么Byte是从-128到127?

原文链接:(11条消息) 为什么Byte是从-128到127?_strongerHuang的博客-CSDN博客

笔者在搜索相关问题时发现了上述帖子,但可惜原帖似有遗漏,故补充说明。

  计算机是一个很神奇的东西,仅靠 0 和 1 就能运算、存储等操作。那么,为什么Byte是从是从-128到127?

今天就给大家讲讲计算机二进制的一些内容。

1

计算机表示数据的规则

这个问题的解释要从符号位说起,在计算机的世界里,数字的表示采用的是二进制的规则,如果自然界只存在正数,那么计算机的编码方式将无比简单,直接就能使用二进制来表示。比如十进制的8,直接就用1000表示就可以。

但是自然界还存在负数,在现实社会中我们使用正号和负号来表示,但是对于计算机来说,要添加正号和负号不是那么容易的事情,会带来电路复杂度成倍的上升。

于是,所谓的符号位出现了,采用最高位来表示符号位,0为正数,1为负数。我觉得本质上符号位就是为了解决计算机如何表示负数而出现的。

嵌入式专栏

2

原码、反码、补码

有了正数和负数,下面说说运算的问题,根据冯诺依曼计算机体系得知,一台计算机由运算器,控制器,存储器,输入输出设备组成,其中运算器只有加法运算器(其他的运算全部转换成加法运算来完成),所以呢,计算机世界的减法只能用加法表示。

比如:4-2 只能用4+(-2)运算。

1.原码

-2怎么表示?最直观的表示方法表示为1010,最高位是符号位。这样的表示方式,我们称为原码表示法。然后我们就愉快的开始了运算。

 
  1. 4-2=0100+1010=1110=-6

  2. 2-2=0010+1010=1100=-4

很明显结果是不对的,所以不能用原码来表示负数。但是主要的问题是因为两个相反数相加不等于0导致其他运算的结果错误。

假设解决了相反数相加等于0:4-2=2+2-2=2,那么其他的运算也是可以得到正确结果的。

2.反码

为了解决这个问题,我们引入了反码。

负数是一个正数的相反数,所以我们将一个正数全部按位取反来表示一个负数,这种表示负数的方式就是反码。

比如:

2是0010,那么-2就是1101,然后我们再来开始愉快的运算之路。

4-2=0100+1101=0001(反码)=0001=1
2-2=0010+1101=1111(反码)=1000=-0
-4-2=1011+1101=1000(反码)=1111=-7
-1-2=1110+1101=1011(反码)=1100=-4

实验发现除了两个相反数相加稍微接近我们所熟知的结果,其他的结果简直不忍直视,所以用反码来表示负数也是不靠谱的。

实际上,反码是可以用来做运算的。我们发现当符号位存在进位的时候,此时你的运算的结果可能跟你的预期是有差距的,但是是可以通过修正结算过程来达到期望的结果的。修正的方法就是如果符号位有进位的情况下,将进位加到结果的最后一位就可以对结果达成修正。

比如:

4-2=0100+1101=0001+1=0010=2 结果正确

-4-2=1011+1101=1000(反码)+1=1001(反码)=1110=-6 结果正确

-1-2=1110+1101=1011(反码)+1=1100(反码)=1011=-3 结果正确

这说明反码是可以用来进行减法计算的,但是需要付出额外的代价,并且没有解决+0和-0的问题。

3.补码

怎么来解决负数的表示问题呢?伟大的科学家们观察自然界的运行规律,总结出了两个很牛逼的概念,一个叫"模",一个叫"补数"。

嵌入式专栏

3

官方术语:

“模”是指一个计量系统的计数范围,如时钟、日历等.计算机也可以看成一个计量机器,它也有一个计量范围。只要有一个计量范围,即都存在一个“模”。

“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。

比如:十二小时制的时钟采用的是十二进制来表示时间,一到了12点,再向后就又从1开始了,所以12是时钟系统的模。12是一个范围,超过了十二一切从头来过。

好多文章都说时钟系统的计量范围是0到11,但是没有解释为什么,我这边猜测是因为时钟采用的是12进制,如果不发生进位的话,那它就只能表示0到11这12个数。这跟我们的现实生活是对应得上的,我们一般讲的12点其实是0点,所以12本来是在时钟表示不出来的值,是一个溢出的量,但是为了方便人们的理解,才有了十二点的表示方式。

嵌入式专栏

4

补数

民间解释:

当M是系统的模的时候,如果|A|+|B|=M,我们就说A的补数是B,这个概念跟补角的概念类似,如果两个角相加为180°,那么称两个角互补。(实际上补数还有一些别的解释,但是目前我觉得这种解释比较合理)。

说清楚了模和补码,然后最重要的一个发现来了,在有模的系统中,减去一个数等于加上它的补数.还是以时钟为例:如果我们把顺时针看成正,把逆时针看成负,现在是2点,如果想要变成1点,可以逆时针转一格,也可以顺时针转11格,写成数学式子就是 2-1=2+11.

嵌入式专栏

5

为什么?

除了补数可以解释,还有说法是一个有模的系统里,如果发生数的溢出,那么溢出的这个数表示的数就是对M求模的结果(因为我们知道时钟的取值范围是0-11,超过了11,将又从0开始)。

2+11=1+12=1或者2+11=13 mod 12=1将时钟迁移到计算机系统:比如一个4位的二进制,最多可以表示2^4=16个数,最大的数是1111=15,超过1111就会发生进位的情况,变成10000,因为只有四位,所以表示的是0000=0,然后再加一,变成0001=1,开始了循环,那么模的值就是16这个溢出的值。

有了上面的基础,我们很轻松的就可以将减法直接变成加法来计算。

对于byte来说就是七位,七位正数最大的就是1111111 转换成十进制就是127,从 2的0次方加到2的6次方。

热知识

在计算机中,数字都是以二进制补码的方式进行存储和运算

故在byte中,正数可以表示为从0000 0000->01111 1111这是其补码,但因为是正数所以原反补相同,因此其正数范围为0到127.

而负数范围则是从1111 1111->1000 0000,这是其补码,但输出时要以原码或十进制形式输出

补码1111 1111

反码为补码减一即1111 1110

补码为源码取反,反之亦然 即1000 0001

得到 -1.

补码1000 0000

反码为补码减一,故 0111 1111。

到这里便出问题了,显然我们用符号位做了运算,显然错误。

而后我们跳出全局想一下这个问题,8位字节,去除符号位后只剩七位,七位数无法表示出+-128,所以理论上负数极值应为1111 1111->1000 0001,即-1到-127,1000 0000直接看的话就是-0,所以只能是-0被规定为-128。这是个很巧妙也很必须的设定,只有这样才能满足256位,才能解释为什么byte所占字节为-128-127。

然后来解决这个-128为什么可以用1000 0000表示。
   众所周知byte只有8位。在无符号位的二进制中128的表示为1000 0000。有符号位的情况下byte无法表示+128或-128。
   但倘若我们假设现在byte不是占用8位,而是9位,最高位是符号位。那么-128就能够是1 1000 0000,其补码也是1 1000 0000,二者相同。-128的补码尾八位就是1000 0000。那就规定【1000 0000是-128的补码,且-128是没有原码和反码的,即不能利用1000 0000反推其原码和反码】。

其实这么设计的巧妙之处在于:
    1.对于如果大于8位的有符号整数数据类型,-128的补码尾八位刚好是1000 0000。
    2.比如127(0111 1111)加1(0000 0001)刚好得到-128(1000 0000),-128(1000 0000)加1(0000 00001)等于-127(1000 0001)这样从-128~127的反码首尾相连,形成了一个闭环,就像时钟一样。   
    3.上文也提到过,在计算机中减法运算可以转换成加法运算,比如8-1——>8+(-1)——>补码运算:(0000 1000) + (1111 1111) = (0000 0111) 刚好是7。-128+127——>(1000 0000) + (0111 1111) = (1111 1111)刚好是-1,-128的补码完美的适用于减法。

由byte范围同理可得:

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
RSA前端JS加密,后端JAVA解密实现 用RSA非对称加密方式实现。后台生成rsa密钥对,然后在页面设置rsa公钥,提交时用公钥加密密码,生成的密文传到后台,后台再用私钥解密,获取密码明文。 这样客户端只需要知道rsa加密方式和公钥,前台不知道私钥是无法解密的,此解决方案还是相对比较安全的。 需要到http://www.bouncycastle.org/latest_releases.html下载bcpkix-jdk15on-151.jar文件。 缺陷:由于进行的都是大数计算,使得RSA最快的情况也比DES慢上100倍,无论 是软件还是硬件实现。所以一般来说只用于少量数据 加密。 下面我们就来一个实际的例子: 1、前端加密需要引入Barrett.js、BigInt.js和RSA.js。 <script src="/rsa/RSA.js" type="text/javascript"></script> <script src="/rsa/BigInt.js" type="text/javascript"></script> <script src="/rsa/Barrett.js" type="text/javascript"></script> 复制代码 2、前端加密代码: encryptedString : (function(paramStr, rsaKey){ setMaxDigits(130); //第一个参数为加密指数、第二个参数为解密参数、第三个参数为加密系数 //加密指数就是RSA公有KEY对象对象中toString()返回的字符串(encryptionExponent)数字部分默认就是10001. //加密系数就是RSA公有KEY对象对象中toString()返回的字符串modulus部分 key = new RSAKeyPair("10001", "", rsaKey); //返回加密后的字符串 return encryptedString(key, encodeURIComponent(paramStr)); }) 复制代码其中的加密系数可以自定义,这里为:8246a46f44fc4d961e139fd70f4787d272d374532f4d2d9b7cbaad6a15a8c1301319aa6b3f30413b859351c71938aec516fa7147b69168b195e81df46b6bed7950cf3a1c719d42175f73d7c97a85d7d20a9e83688b92f05b3059bb2ff75cd7190a042cd2db97ebc2ab4da366f2a7085556ed613b5a39c9fdd2bb2595d1dc23b5 3、后台RSA加密解密方法如下: import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.math.BigInteger; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.PublicKey; import java.security.SecureRandom; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.InvalidKeySpecException; import java.security.spec.RSAPrivateKeySpec; import java.security.spec.RSAPublicKeySpec; import javax.crypto.Cipher; import org.apache.commons.lang.StringUtils; import com.jd.uwp.common.Constants; /** * RSA 工具类。提供加密,解密,生成密钥对等方法。 * 需要bcprov-jdk16-140.jar包。 * */ public class RSAUtil { private static String RSAKeyStore = "RSAKey.txt"; //测试方法 public static void main(String[] args){ //先生成密钥文件 String basePath = "D:\\RSA\\"; RSAUtil.generateKeyPair(basePath); //得到公用KEY对象,如果不保存到可以从生成密钥方法得到. KeyPair kp = RSAUtil.getKeyPair(basePath); //对字符串加密 String pass = "123456"; byte[] enpass = RSAUtil.encrypt(pk.getPublicKey(), pass.getByte()) String enpassStr = new String(enpass); System.out.println("加密:" + enpassStr); //对字符串解密--注意JAVA中解密要用byte[]这种方法 byte[] depass = RSAUtil.decrypt(pk.getPrivateKey(), enpass); String depassStr = new String(depass); System.out.println("解密:" + depassStr); //对字符串解密--主要针对JS传过来的加密字符串解密,其内部也要调用上面的方法. String decryptStr(String paramStr, String basePath) //注意JS中用到的encryptionExponent和modulus通过pk.getPublicKey().toString()字符串中得到. } /** * * 生成密钥对 * @return KeyPair * @throws EncryptException */ public static KeyPair generateKeyPair(String basePath) throws Exception { try { KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider()); //大小 final int KEY_SIZE = 1024; keyPairGen.initialize(KEY_SIZE, new SecureRandom()); KeyPair keyPair = keyPairGen.generateKeyPair(); saveKeyPair(keyPair, basePath); return keyPair; } catch (Exception e) { throw new Exception(e.getMessage()); } } /** * 获取密钥对 * @return * @throws Exception */ public static KeyPair getKeyPair(String basePath) throws Exception { FileInputStream fis = new FileInputStream(StringUtils.isNotBlank(basePath) ? (basePath + RSAKeyStore) : RSAKeyStore); ObjectInputStream oos = new ObjectInputStream(fis); KeyPair kp = (KeyPair) oos.readObject(); oos.close(); fis.close(); return kp; } /** * 保存密钥 * @param kp * @throws Exception */ public static void saveKeyPair(KeyPair kp, String basePath) throws Exception { FileOutputStream fos = new FileOutputStream(StringUtils.isNotBlank(basePath) ? (basePath + RSAKeyStore) : RSAKeyStore); ObjectOutputStream oos = new ObjectOutputStream(fos); // 生成密钥 oos.writeObject(kp); oos.close(); fos.close(); } /** * * 生成公钥 * @param modulus * @param publicExponent * @return RSAPublicKey * @throws Exception */ public static RSAPublicKey generateRSAPublicKey(byte[] modulus, byte[] publicExponent) throws Exception { KeyFactory keyFac = null; try { keyFac = KeyFactory.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider()); } catch (NoSuchAlgorithmException ex) { throw new Exception(ex.getMessage()); } RSAPublicKeySpec pubKeySpec = new RSAPublicKeySpec(new BigInteger( modulus), new BigInteger(publicExponent)); try { return (RSAPublicKey) keyFac.generatePublic(pubKeySpec); } catch (InvalidKeySpecException ex) { throw new Exception(ex.getMessage()); } } /** * * 生成私钥 * @param modulus * @param privateExponent * @return RSAPrivateKey * @throws Exception */ public static RSAPrivateKey generateRSAPrivateKey(byte[] modulus, byte[] privateExponent) throws Exception { KeyFactory keyFac = null; try { keyFac = KeyFactory.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider()); } catch (NoSuchAlgorithmException ex) { throw new Exception(ex.getMessage()); } RSAPrivateKeySpec priKeySpec = new RSAPrivateKeySpec(new BigInteger( modulus), new BigInteger(privateExponent)); try { return (RSAPrivateKey) keyFac.generatePrivate(priKeySpec); } catch (InvalidKeySpecException ex) { throw new Exception(ex.getMessage()); } } /** * * 加密 * @param key 加密的密钥 * @param data 待加密的明文数据 * @return 加密后的数据 * @throws Exception */ public static byte[] encrypt(PublicKey pk, byte[] data) throws Exception { try { Cipher cipher = Cipher.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider()); cipher.init(Cipher.ENCRYPT_MODE, pk); // 获得加密块大小,如:加密前数据为128byte,而key_size=1024 int blockSize = cipher.getBlockSize(); // 加密块大小为127byte,加密后为128byte; //因此共有2个加密块,第一个127byte第二个为1个byte int outputSize = cipher.getOutputSize(data.length);// 获得加密块加密后块大小 int leavedSize = data.length % blockSize; int blocksSize = leavedSize != 0 ? data.length / blockSize + 1 : data.length / blockSize; byte[] raw = new byte[outputSize * blocksSize]; int i = 0; while (data.length - i * blockSize > 0) { if (data.length - i * blockSize > blockSize) { cipher.doFinal(data, i * blockSize, blockSize, raw, i * outputSize); } else { cipher.doFinal(data, i * blockSize, data.length - i * blockSize, raw, i * outputSize); } i++; } return raw; } catch (Exception e) { throw new Exception(e.getMessage()); } } /** * * 解密 * @param key 解密的密钥 * @param raw 已经加密的数据 * @return 解密后的明文 * @throws Exception */ @SuppressWarnings("static-access") public static byte[] decrypt(PrivateKey pk, byte[] raw) throws Exception { try { Cipher cipher = Cipher.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider()); cipher.init(cipher.DECRYPT_MODE, pk); int blockSize = cipher.getBlockSize(); ByteArrayOutputStream bout = new ByteArrayOutputStream(64); int j = 0; while (raw.length - j * blockSize > 0) { bout.write(cipher.doFinal(raw, j * blockSize, blockSize)); j++; } return bout.toByteArray(); } catch (Exception e) { throw new Exception(e.getMessage()); } } /** * 解密方法 * paramStr ->密文 * basePath ->RSAKey.txt所在的文件夹路径 **/ public static String decryptStr(String paramStr, String basePath) throws Exception{ byte[] en_result = new BigInteger(paramStr, 16).toByteArray(); byte[] de_result = decrypt(getKeyPair(basePath).getPrivate(), en_result); StringBuffer sb = new StringBuffer(); sb.append(new String(de_result)); //返回解密的字符串 return sb.reverse().toString(); } } 4、前端提交到后端解密调用: //前端 表单提交 $.ajax({ url : contextPath + "test.action", //加密传输,第二个参数应该是从ACTION传过来才对. data : {pwd:encryptedString ($("#pwd").val(), "adasdasdasdasdadsasdasdasdasd")}, type : "post", datatype : "json", success : function(retData){ } }); //后端解密代码 RSAUtil.decryptStr(paramMap.getString("pwd"), request.getSession().getServletContext().getRealPath("/"));
下面是一系列蓝屏中可能出现的代码. 0 0x00000000 作业完成。 1 0x00000001 不正确的函数。 2 0x00000002 系统找不到指定的档案。 3 0x00000003 系统找不到指定的路径。 4 0x00000004 系统无法开启档案。 5 0x00000005 拒绝存取。 6 0x00000006 无效的代码。 7 0x00000007 储存体控制区块已毁。 8 0x00000008 储存体空间不足,无法处理这个指令。 9 0x00000009 储存体控制区块地址无效。 10 0x0000000A 环境不正确。 11 0x0000000B 尝试加载一个格式错误的程序。 12 0x0000000C 存取码错误。 13 0x0000000D 资料错误。 14 0x0000000E 储存体空间不够,无法完成这项作业。 15 0x0000000F 系统找不到指定的磁盘驱动器。 16 0x00000010 无法移除目录。 16 0x00000010 无法移除目录。 17 0x00000011 系统无法将档案移到 其它的磁盘驱动器。 18 0x00000012 没有任何档案。 19 0x00000013 储存媒体为写保护状态。 20 0x00000014 系统找不到指定的装置。 21 0x00000015 装置尚未就绪。 22 0x00000016 装置无法识别指令。 23 0x00000017 资料错误 (cyclic redundancy check) 24 0x00000018 程序发出一个长度错误的指令。 25 0x00000019 磁盘驱动器在磁盘找不到 持定的扇区或磁道。 26 0x0000001A 指定的磁盘或磁盘无法存取。 27 0x0000001B 磁盘驱动器找不到要求的扇区。 28 0x0000001C 打印机没有纸。 29 0x0000001D 系统无法将资料写入指定的磁盘驱动器。 30 0x0000001E 系统无法读取指定的装置。 31 0x0000001F 连接到系统的某个装置没有作用。 32 0x00000020 文件被另一进程使用中不能访问The process cannot access the file because it is being used by another process. 33 0x00000021 档案的一部份被锁定, 现在无法存取。 34 0x00000022 磁盘驱动器的磁盘不正确。 请将 %2 (Volume Serial Number: %3) 插入磁盘机%1。 36 0x00000024 开启的分享档案数量太多。 38 0x00000026 到达档案结尾。 39 0x00000027 磁盘已满。 50 0x00000032 不支持这种网络要求。 51 0x00000033 远程计算机无法使用。 52 0x00000034 网络名称重复。 53 0x00000035 网络路径找不到。 54 0x00000036 网络忙碌中。 55 0x00000037 特殊的网络资源或设备不可再使用The specified network resource or device is no longer available. 56 0x00000038 网络BIOS命令已达到限制The network BIOS command limit has been reached. 57 0x00000039 网络配接卡发生问题。 58 0x0000003A 指定的服务器无法执行要求的作业。 59 0x0000003B 网络发生意外错误。 60 0x0000003C 远程配接卡不兼容。 61 0x0000003D 打印机队列已满。 62 0x0000003E 服务器的空间无法储存等候打印的档案。 63 0x0000003F 等候打印的档案已经删除。 64 0x00000040 指定的网络名称无法使用。 65 0x00000041 拒绝存取网络。 65 0x00000041 拒绝存取网络。 66 0x00000042 网络资源类型错误。 67 0x00000043 网络名称找不到。 68 0x00000044 超过区域计算机网络配接卡的名称限制。 69 0x00000045 超过网络 BIOS 作业阶段的限制。 70 0x00000046 远程服务器已经暂停或者正在起始中。 71 0x00000047 由于联机数目已达上限,此时无法再联机到这台远程计算机。 72 0x00000048 指定的打印机或磁盘装置已经暂停作用。 80 0x00000050 档案已经存在。 82 0x00000052 无法建立目录或档案。 83 0x00000053 INT 2484 0x00000054 处理这项要求的储存体无法使用。 85 0x00000055 近端装置名称已经在使用中。 86 0x00000056 指定的网络密码错误。 87 0x00000057 参数错误。 88 0x00000058 网络发生资料写入错误。 89 0x00000059 此时系统无法执行其它行程。 100 0x00000064 无法建立其它的系统 semaphore。 101 0x00000065 属于其它行程专用的 semaphore. 102 0x00000066 semaphore 已经设定,而且无法关闭。 103 0x00000067 无法指定 semaphore 。 104 0x00000068 在岔断时间无法要求专用的 semaphore 。 104 0x00000068 在岔断时间无法要求专用的 semaphore 。 105 0x00000069 此 semaphore 先前的拥有权已经结束。 106 0x0000006A 请将磁盘插入 %1。 107 0x0000006B 因为代用的磁盘尚未插入,所以程序已经停止。 108 0x0000006C 磁盘正在使用中或被锁定。 109 0x0000006D Pipe 已经中止。 110 0x0000006E 系统无法开启指定的 装置或档案。 111 0x0000006F 档名太长。 112 0x00000070 磁盘空间不足。 113 0x00000071 没有可用的内部档案标识符。 114 0x00000072 目标内部档案标识符不正确。 117 0x00000075 由应用程序所执行的 IOCTL 呼叫 不正确。 118 0x00000076 写入验证参数值不正确。 119 0x00000077 系统不支持所要求的指令。 120 0x00000078 此项功能仅在 Win32 模式有效。 121 0x00000079 semaphore 超过逾时期间。 122 0x0000007A 传到系统呼叫的资料区域 太小。 123 0x0000007B 文件名、目录名称或储存体卷标语法错误。 124 0x0000007C 系统呼叫层次不正确。 125 0x0000007D 磁盘没有设定卷标。 126 0x0000007E 找不到指定的模块。 127 0x0000007F 找不到指定的程序。 128 0x00000080 没有子行程可供等待。 128 0x00000080 没有子行程可供等待。 129 0x00000081 %1 这个应用程序无法在 Win32 模式下执行。 130 0x00000082 Attempt to use a file handle to an open disk partition for an operation other than raw disk I/O. 131 0x00000083 尝试将档案指针移至档案开头之前。 132 0x00000084 无法在指定的装置或档案,设定档案指针。 133 0x00000085 JOIN 或 SUBST 指令 无法用于 内含事先结合过的磁盘驱动器。 134 0x00000086 尝试在已经结合的磁盘驱动器,使用 JOIN 或 SUBST 指令。 135 0x00000087 尝试在已经替换的磁盘驱动器,使 用 JOIN 或 SUBST 指令。 136 0x00000088 系统尝试删除 未连结过的磁盘驱动器的连结关系。 138 0x0000008A 系统尝试将磁盘驱动器结合到已经结合过之磁盘驱动器的目录。 139 0x0000008B 系统尝试将磁盘驱动器替换成已经替换过之磁盘驱动器的目录。 140 0x0000008C 系统尝试将磁盘驱动器替换成已经替换过之磁盘驱动器的目录。 141 0x000000 系统尝试将磁盘驱动器 SUBST 成已结合的磁盘驱动器 目录。 142 0x0000008E 系统此刻无法执行 JOIN 或 SUBST。 143 0x0000008F 系统无法将磁盘驱动器结合或替换同一磁盘驱动器下目录。 144 0x00000090 这个目录不是根目录的子目录。 145 0x00000091 目录仍有资料。 146 0x00000092 指定的路径已经被替换过。 147 0x00000093 资源不足,无法处理这项 指令。 148 0x00000094 指定的路径这时候无法使用。 148 0x00000094 指定的路径这时候无法使用。 149 0x00000095 尝试要结合或替换的磁盘驱动器目录,是已经替换过的的目标。 150 0x00000096 CONFIG.SYS 文件未指定系统追踪信息,或是追踪功能被取消。 151 0x00000097 指定的 semaphore事件 DosMux0000SemWait 数目不正确。 152 0x00000098 DosMux0000SemWait 没有执行;设定太多的 semaphore。 153 0x00000099 DosMux0000SemWait 清单不正确。 154 0x0000009A 您所输入的储存媒体标 元长度限制。 155 0x0000009B 无法建立其它的执行绪。 156 0x0000009C 接收行程拒绝接受信号。 157 0x0000009D 区段已经被舍弃,无法被锁定。 158 0x0000009E 区段已经解除锁定。 159 0x0000009F 执行绪识别码的地址不正确。 160 0x000000A0 传到 DosEx0000ecPgm 的自变量字符串不正确。 161 0x000000A1 指定的路径不正确。 162 0x000000A2 信号等候处理。 164 0x000000A4 系统无法建立执行绪。 167 0x000000A7 无法锁定档案的部份范围。 170 0x000000AA 所要求的资源正在使用中。 173 0x000000AD 取消范围的锁定要求不明显。 174 0x000000AE 档案系统不支持自动变更锁定类型。 180 0x000000B4 系统发现不正确的区段号码。 182 0x000000B6 操作系统无法执行 %1。 182 0x000000B6 操作系统无法执行 %1。 183 0x000000B7 档案已存在,无法建立同一档案。 186 0x000000BA 传送的旗号错误。 187 0x000000BB 指定的系统旗号找不到。 188 0x000000BC 操作系统无法执行 %1。 189 0x000000BD 操作系统无法执行 %1。 190 0x000000BE 操作系统无法执行 %1。 191 0x000000BF 无法在 Win32 模式下执行 %1。 192 0x000000C0 操作系统无法执行 %1。 193 0x000000C1 %1 不是正确的 Win32 应用程序。 194 0x000000C2 操作系统无法执行 %1。 195 0x000000C3 操作系统无法执行 %1。 196 0x000000C4 操作系统无法执行 这个应用程序。 197 0x000000C5 操作系统目前无法执行 这个应用程序。 198 0x000000C6 操作系统无法执行 %1。 199 0x000000C7 操作系统无法执行 这个应用程序。 200 0x000000C8 程序代码的区段不可以大于或等于 64KB。 201 0x000000C9 操作系统无法执行 %1。 202 0x000000CA 操作系统无法执行 %1。 203 0x000000CB 系统找不到输入的环境选项。\r 205 0x000000CD 在指令子目录下,没有任何行程有信号副处理程序。 206 0x000000CE 文件名称或扩展名太长。 207 0x000000CF ring 2 堆栈使用中。 207 0x000000CF ring 2 堆栈使用中。 208 0x000000D0 输入的通用档名字元 * 或 ? 不正确, 或指定太多的通用档名字元。 209 0x000000D1 所传送的信号不正确。 210 0x000000D2 无法设定信号处理程序。 212 0x000000D4 区段被锁定,而且无法重新配置。 214 0x000000D6 附加到此程序或动态连结模块的动态连结模块太多。 215 0x000000D7 Can’t nest calls to LoadModule. 230 0x000000E6 The pipe state is invalid. 231 0x000000E7 所有的 pipe instances 都在忙碌中。 232 0x000000E8 The pipe is being closed. 233 0x000000E9 No process is on the other end of the pipe. 234 0x000000EA 有更多可用的资料。 240 0x000000F0 作业阶段被取消。 254 0x000000FE 指定的延伸属性名称无效。 255 0x000000FF 延伸的属性不一致。 259 0x00000103 没有可用的资料。 266 0x0000010A 无法使用 Copy API。 267 0x0000010B 目录名称错误。 275 0x00000113 延伸属性不适用于缓冲区。 276 0x00000114 在外挂的档案系统上的延伸属性档案已经毁损。 277 0x00000115 延伸属性表格文件满。 278 0x00000116 指定的延伸属性代码无效。 278 0x00000116 指定的延伸属性代码无效。 282 0x0000011A 外挂的这个档案系统不支持延伸属性。 288 0x00000120 意图释放不属于叫用者的 mutex0000。 298 0x0000012A semaphore 传送次数过多。 299 0x0000012B 只完成 Read/WriteProcessMemory 的部份要求。 317 0x0000013D 系统找不到位于讯息文件 %2 中编号为 0x0000%1 的讯息。 487 0x000001E7 尝试存取无效的地址。 534 0x00000216 运算结果超过 32 位。 535 0x00000217 信道的另一端有一个行程在接送资料。 536 0x00000218 等候行程来开启信道的另一端。 994 0x000003E2 存取延伸的属性被拒。 995 0x000003E3 由于执行绪结束或应用程序要求,而异常终止 I/O 作业。 996 0x000003E4 重叠的 I/O 事件不是设定成通知状态。 997 0x000003E5 正在处理重叠的 I/O 作业。 998 0x000003E6 对内存位置的无效存取。 999 0x000003E7 执行 inpage 作业发生错误。 1001 0x000003E9 递归太深,堆栈满溢。 1002 0x000003EA 窗口无法用来传送讯息。 1003 0x000003EB 无法完成这项功能。 1004 0x000003EC 旗号无效。 1005 0x000003ED 储存媒体未含任何可辨识的档案系统。 请确定以加载所需的系统驱动程序,而且该储存媒体并未毁损。 1006 0x000003EE 储存该档案的外部媒体发出警告,表示该已开启档案已经无效。 1007 0x000003EF 所要求的作业无法在全屏幕模式下执行。 1008 0x000003F0 An attempt was made to reference a token that does not ex0000ist. 1009 0x000003F1 组态系统登录数据库毁损。 1010 0x000003F2 组态系统登录机码无效。 1011 0x000003F3 无法开启组态系统登录机码。 1012 0x000003F4 无法读取组态系统登录机码。 1013 0x000003F5 无法写入组态系统登录机码。 1014 0x000003F6 系统登录数据库中的一个档案必须使用记录或其它备份还原。 已经还原成功。 1015 0x000003F7 系统登录毁损。其中某个档案毁损、或者该档案的 系统映对内存内容毁损、会是档案无法复原。 1016 0x000003F8 系统登录起始的 I/O 作业发生无法复原的错误。 系统登录无法读入、写出或更新,其中的一个档案 内含系统登录在内存中的内容。 1017 0x000003F9 系统尝试将档案加载系统登录或将档案还原到系统登录中,但是,指定档案的格式不是系统登录文件的格式。 1018 0x000003FA 尝试在标示为删除的系统登录机码,执行不合法的操作。 1018 0x000003FA 尝试在标示为删除的系统登录机码,执行不合法的操作。 1019 0x000003FB 系统无法配置系统登录记录所需的空间。 1020 0x000003FC 无法在已经有子机码或数值的系统登录机码建立符号连结。 1021 0x000003FD 无法在临时机码下建立永久的子机码。 1022 0x000003FE 变更要求的通知完成,但信息 并未透过呼叫者的缓冲区传回。呼叫者现在需要自行列举档案,找出变更的地方。 1051 0x0000041B 停止控制已经传送给其它服务 所依峙的一个服务。 1052 0x0000041C 要求的控制对此服务无效 1016 0x000003F8 系统登录起始的 I/O 作业发生无法复原的错误。 系统登录无法读入、写出或更新,其中的一个档案 内含系统登录在内存中的内容。 1017 0x000003F9 系统尝试将档案加载系统登录或将档案还原到系统登录中,但是,指定档案的格式不是系统登录文件的格式。 1018 0x000003FA 尝试在标示为删除的系统登录机码,执行不合法的操作。 1018 0x000003FA 尝试在标示为删除的系统登录机码,执行不合法的操作。 1019 0x000003FB 系统无法配置系统登录记录所需的空间。 1020 0x000003FC 无法在已经有子机码或数值的系统登录机码建立符号连结。 1021 0x000003FD 无法在临时机码下建立永久的子机码。 1022 0x000003FE 变更要求的通知完成,但信息 并未透过呼叫者的缓冲区传回。呼叫者现在需要自行列举档案,找出变更的地方。 1051 0x0000041B 停止控制已经传送给其它服务 所依峙的一个服务。 1052 0x0000041C 要求的控制对此服务无效 1052 0x0000041C 要求的控制对此服务无效 1053 0x0000041D The service did not respond to the start or control request in a timely fashion. 1054 0x0000041E 无法建立服务的执行绪。 1055 0x0000041F 服务数据库被锁定。 1056 0x00000420 这种服务已经在执行。 1057 0x00000421 帐户名称错误或者不存在。 1058 0x00000422 指定的服务暂停作用,无法激活。 1059 0x00000423 指定循环服务从属关系。 1060 0x00000424 指定的服务不是安装进来的服务。 1061 0x00000425 该服务项目此时无法接收控制讯息。 1062 0x00000426 服务尚未激活。 1063 0x00000427 无法联机到服务控制程序。 1064 0x00000428 处理控制要求时,发生意外状况。 1065 0x00000429 指定的数据库不存在。 1066 0x0000042A 服务传回专属于服务的错误码。 1067 0x0000042B The process terminated unex0000pectedly. 1068 0x0000042C 从属服务或群组无法激活。 1069 0x0000042D 因为登入失败,所以没有激活服务。 1070 0x0000042E 在激活之后,服务在激活状态时当机。 1071 0x0000042F 指定服务数据库锁定无效。 1072 0x00000430 指定的服务已经标示为删除。 1073 0x00000431 指定的服务已经存在。 1074 0x00000432 系统目前正以上一次执行成功的组态执行。 1075 0x00000433 从属服务不存在,或已经标示为删除。 1076 0x00000434 目前的激活已经接受上一次执行成功的 控制设定。 1077 0x00000435 上一次激活之后,就没有再激活服务。 1078 0x00000436 指定的名称已经用于服务名称或服务显示 名称。 1100 0x0000044C 已经到了磁带的最后。 1101 0x0000044D 到了档案标示。 1102 0x0000044E 遇到磁带的开头或分割区。 1100 0x0000044C 已经到了磁带的最后。 1101 0x0000044D 到了档案标示。 1102 0x0000044E 遇到磁带的开头或分割区。 1103 0x0000044F 到了档案组的结尾。 1104 0x00000450 磁带没有任何资料。 1105 0x00000451 磁带无法制作分割区。 1106 0x00000452 存取多重容体的新磁带时,发现目前 区块大小错误。 1107 0x00000453 加载磁带时,找不到磁带分割区信息。 1108 0x00000454 无法锁住储存媒体退带功能。 1108 0x00000454 无法锁住储存媒体退带功能。 1109 0x00000455 无法解除加载储存媒体。 1110 0x00000456 磁盘驱动器中的储存媒体已经变更。 1111 0x00000457 已经重设 I/O 总线。 1112 0x00000458 磁盘驱动器没有任何储存媒体。 1113 0x00000459 目标 multi-byte code page,没有对应 Unicode 字符。 1114 0x0000045A 动态链接库 (DLL) 起始例程失败。 1115 0x0000045B 系统正在关机。 1116 0x0000045C 无法中止系统关机,因为没有关机的动作在进行中。 1117 0x0000045D 因为 I/O 装置发生错误,所以无法执行要求。 1118 0x0000045E 序列装置起始失败,会取消加载序列驱动程序。 1119 0x0000045F 无法开启装置。这个装置与其它装置共享岔断要求 (IRQ)。至少已经有一个使用同一IRQ 的其它装置已经开启。 1120 0x00000460 A serial I/O operation was completed by another write to the serial port(The IOCTL_SERIAL_x0000OFF_COUNTER reached zero.) 1121 0x00000461 因为已经过了逾时时间,所以序列 I/O 作业完成。 (IOCTL_SERIAL_x0000OFF_COUNTER 不是零。) 1122 0x00000462 在磁盘找不到任何的 ID 地址标示。 1123 0x00000463 磁盘扇区 ID 字段与磁盘控制卡追踪地址 不符。 1124 0x00000464 软式磁盘驱动器控制卡回报了一个软式磁盘驱动器驱动程序无法识别的错误。 1125 0x00000465 软式磁盘驱动器控制卡传回与缓存器中不一致的结果。 1126 0x00000466 存取硬盘失败,重试后也无法作业。 1127 0x00000467 存取硬盘失败,重试后也无法作业。 1128 0x00000468 存取硬盘时,必须重设磁盘控制卡,但是 连重设的动作也失败。 1129 0x00000469 到了磁带的最后。 1130 0x0000046A 可用服务器储存空间不足,无法处理这项指令。 1131 0x0000046B 发现潜在的死锁条件。 1132 0x0000046C 指定的基本地址或档案位移没有适当 对齐。 1140 0x00000474 尝试变更系统电源状态,但其它的应用程序或驱动程序拒绝。 1141 0x00000475 系统 BIOS 无法变更系统电源状态。 1150 0x0000047E 指定的程序需要新的 Windows 版本。 1151 0x0000047F 指定的程序不是 Windows 或 MS-DOS 程序。 1152 0x00000480 指定的程序已经激活,无法再激活一次。 1153 0x00000481 指定的程序是为旧版的 Windows 所写的。 1154 0x00000482 执行此应用程序所需的链接库档案之一毁损。 1155 0x00000483 没有应用程序与此项作业的指定档案建立关联。 1156 0x00000484 传送指令到应用程序发生错误。 1157 0x00000485 找不到执行此应用程序所需的链接库档案。 1200 0x000004B0 指定的装置名称无效。 1201 0x000004B1 装置现在虽然未联机,但是它是一个记忆联机。 1202 0x000004B2 尝试记忆已经记住的装置。 1203 0x000004B3 提供的网络路径找不到任何网络提供程序。 1203 0x000004B3 提供的网络路径找不到任何网络提供程序。 1204 0x000004B4 指定的网络提供程序名称错误。 1205 0x000004B5 无法开启网络联机设定文件。 1206 0x000004B6 网络联机设定文件坏掉。 1207 0x000004B7 无法列举非容器。 1208 0x000004B8 发生延伸的错误。 1209 0x000004B9 指定的群组名称错误。 1210 0x000004BA 指定的计算机名称错误。 1211 0x000004BB 指定的事件名称错误。 1212 0x000004BC 指定的网络名称错误。 1213 0x000004BD 指定的服务名称错误。 1214 0x000004BE 指定的网络名称错误。 1215 0x000004BF 指定的资源共享名称错误。 1216 0x000004C0 指定的密码错误。 1217 0x000004C1 指定的讯息名称错误。 1218 0x000004C2 指定的讯息目的地错误。 1219 0x000004C3 所提供的条件与现有的条件组发生冲突。 1220 0x000004C4 尝试与网络服务器联机,但是 与该服务器的联机已经太多。 1221 0x000004C5 其它网络计算机已经在使用这个工作群组或网域名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值