原码和补码的加减运算 |
您所在的位置:网站首页 › 补码的加减运算法则 › 原码和补码的加减运算 |
定点数(原码、反码、补码、移码)
做而论道_CS: 求负数补码的公式,已经知道了: [负数]补码 = 256 + 该负数。 求正数(以及零)的补码,也可用这个公式: [正数]补码 = 256 + 该正数。 由于加上 256,将会出现进位。 将进位舍弃之后,那就是: [正数]补码 = 该正数。 这就证明了:正数和零的补码,就是该数字本身。 这就不用再举例说明了吧? ---------------------- 另外,由补码换算到十进制数,也极其简单。 你只需记住:【补码首位的权,是负数】。 一般的八位二进制数,各个位的权是: 128、64、32、16、8、4、2、1; 如果是八位的补码,各个位的权则是: -128、64、32、16、8、4、2、1。 例如,有一个补码:1110 0001, 它代表的十进制是:-128 + 64 + 32 + 1= -31。 再看,另一个补码:0110 0001, 它代表的十进制是:0 + 64 + 32 + 1 = +97。 仅仅使用【进制转换】,不就完事了! ---------------------- 那么,所谓的: 机器数真值符号位原码反补码正数三码相同 负数取反加一符号位不变模符号位也参加运算 ... 这一大堆乱七八糟的概念,不都是垃圾嘛! 进位,是小学二年级的知识点吧? 舍弃进位,很难理解吗? 老外竟然能弄出那么大一堆概念! 谁要是跟老外学算术,立刻,就掉沟里去了! 我们的计算机老师,也不懂数学,只知道跟风。 一天一天的乱讲,真是毁人不倦坑人不浅! 这些老师,捡个鞋拔子就当做玉如意了。 天天蒙骗学生,自己赚取名声和丰厚的讲课费。 顺便再抓几个学生挂科,抖一下威风! 现在知道我们缺芯片用的原因了吧! 定点数(原码、反码、补码、移码)做而论道_CS: 虽然,计算机使用的,是二进制数。 作为数字,二进制、十进制,都是一样的,都是数。 作为数字,它们就是数,并不是什么“原码反码补码”。 如果用数字,代表“非数字”,才能叫做 “码”。 如:学号、门牌车牌电话性别英文汉字声音颜色 ... ----------------- 补码的特点,不仅是在二进制数中才有。 任何进制的数字,都是相同的。 比如两位十进制数,范围是:0 ~ 99。 将有:27 + 99 = (一百) 26 27 - 1 = 26 如果你忽略进位,只保留两位数, 这两种算法,结果就是一样的。 即,舍弃了进位: 加法,就可以当做减法。 正数,就能当做负数。 在计算机中,舍弃进位,会怎么样? 可以简化硬件。 只用一个加法器,便可走遍天下! ----------------- 计算机的字长,是固定值。 八位机,只会做: 八位 + 八位 = 进位、八位的和。 八位二进制数:0000 0000 ~ 1111 1111。 相当于十进制:0 ~ 255。 如果出现进位,就是 256。 那么,27-1 = 26,八位机将如下计算: 0001 1011 + 1111 1111 --------- (进 1) 0001 1010 舍弃了进位,你就用加法,实现了减法运算! ----------------- 在两位十进制时,舍弃进位,就是减去了一百。 所以,加 99,再减 100,当然就是-1。 在八位二进制时,舍弃进位,就是减去了 256。 那么,加 255,再减 256,显然也是-1。 所以:255 (1111 1111),就相当于-1。 同理:254 (1111 1110),就是-2。 还有:253 (1111 1101),就是-3。 。。。 最后:128,就是-128 了。 以上这些正数,就是计算机专家 “发明” 的补码。 而加上 0 ~ 127,并不会出现进位,也就不用舍弃了。 那么, 0 ~ 127,就当不成负数了,只能当正数使用。 浮点数做而论道_CS: 其实,对浮点数的理解,不需要弄这么麻烦的。 上过初一的,都知道科学记数法: N = ± 绝对值 × 10^e。 绝对值,当然是正数,由一位整数、多位小数组成。 e 则是以 10 为底的指数。 将此法,引入到计算机中,就是 “浮点数” 了: N = (-1)^S × 2^E × (1.) M。 其中的 S 是符号位; E,称为阶码 ,它是:指数 e + 127; (1.)M,就是绝对值,它是一个无符号数。 把 “科学记数法” 中的“指数 e、绝对值” 拿来换算一下,所谓的 “浮点数” 就出来了。 反向换算,也不难吧。 浮点数的运算: 加减时,要先对阶,再用绝对值来加减。 相乘时,就是绝对值相乘除、阶码相加减。 加减乘除有了结果后,还需要整理成规范的形式。 其实,计算机中的浮点数运算,是由 “浮点机” 实现的。 (例如 80x86 系统的中的 “协处理器”。) 对阶、运算、上下溢、规格化等等,都是由硬件完成的。 这些步骤,也不需要你来编程。 硬件的工作原理及其设计,就由 “电子信息工程专业” 去干吧。 计算机专业的老师,就不要在这里哗众取宠了。 计算机专业的学生,学了这些,也是 P 用都没有的。 学了半年,也还是隔靴搔痒而已。 计算机专业的学生,了解一点 “定点数、补码” 就行了。 当然,没上过中学又想装大瓣蒜的人,学学也无妨。 定点数的溢出判断做而论道_CS: Intel 的 CPU 中,有个溢出标志位 OF。 一旦运算出现溢出,OF 就会自动置一, 掌握了这个标志位,就不用讨论别的了。 定点数的溢出判断做而论道_CS: 实际上,变形补码、双符号位,都是不存在的。 用一个符号位,就能横行天下了。 目前,还没有听说,谁家的 CPU 使用双符号位。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |