机器码中的原码,反码,补码计算规则
在机器码中,通常在最左边添加一个不参与运算的符号位,用0表示正号“+”,1表示负号“-”
“◇”表示小数点位置,不占位
小数二进制的转换是小数部分每次乘以2然后取结果的整数部分,如0.5*1 = 1.0,就取1,后面没有了就不用再计算,但这里因为机器字长n为8,所以再补上6个0
设机器字长n为8,首位为符号位,不参与运算
各类机器码参考如下举例
原码
[ + 1 ] 原 = 00000001 [+1]_原 = 00000001 [+1]原=00000001
[ − 1 ] 原 = 10000001 [-1]_原 = 10000001 [−1]原=10000001
[ + 127 ] 原 = 01111111 [+127]_原 = 01111111 [+127]原=01111111
[ − 127 ] 原 = 11111111 [-127]_原 = 11111111 [−127]原=11111111
[ + 45 ] 原 = 00101101 [+45]_原 = 00101101 [+45]原=00101101
[ − 45 ] 原 = 10101101 [-45]_原 = 10101101 [−45]原=10101101
[ + 0.5 ] 原 = 0 ◇ 1000000 [+0.5]_原 = 0◇1000000 [+0.5]原=0◇1000000
[ − 0.5 ] 原 = 1 ◇ 1000000 [-0.5]_原 = 1◇1000000 [−0.5]原=1◇1000000
反码
正数的反码与原码相同
负数的反码是除了符号位,其余位按位取反(简单来说就是除了左边第一位,其余位的1变成0,0变成1)
[ + 1 ] 反 = 00000001 [+1]_反 = 00000001 [+1]反=00000001
[ − 1 ] 反 = 11111110 [-1]_反 = 11111110 [−1]反=11111110
[ + 127 ] 反 = 01111111 [+127]_反 = 01111111 [+127]反=01111111
[ − 127 ] 反 = 10000000 [-127]_反 = 10000000 [−127]反=10000000
[ + 45 ] 反 = 00101101 [+45]_反 = 00101101 [+45]反=00101101
[ − 45 ] 反 = 11010010 [-45]_反 = 11010010 [−45]反=11010010
[ + 0.5 ] 反 = 0 ◇ 1000000 [+0.5]_反 = 0◇1000000 [+0.5]反=0◇1000000
[ − 0.5 ] 反 = 1 ◇ 0111111 [-0.5]_反 = 1◇0111111 [−0.5]反=1◇0111111
补码
(注:考虑到计算的方便性,计算机系统中,数值一律用补码表示)
正数的补码与其原码和反码相同
负数的补码等于其反码末尾加1(1+1=0并且向前进一位,也就是前面的一位也要+1;1+0=1;0+0=0)
[ + 1 ] 补 = 00000001 [+1]_补 = 00000001 [+1]补=00000001
[ − 1 ] 补 = 11111111 [-1]_补 = 11111111 [−1]补=11111111
[ + 127 ] 补 = 01111111 [+127]_补 = 01111111 [+127]补=01111111
[ − 127 ] 补 = 10000001 [-127]_补 = 10000001 [−127]补=10000001
[ + 45 ] 补 = 00101101 [+45]_补 = 00101101 [+45]补=00101101
[ − 45 ] 补 = 11010011 [-45]_补 = 11010011 [−45]补=11010011
[ + 0.5 ] 补 = 0 ◇ 1000000 [+0.5]_补 = 0◇1000000 [+0.5]补=0◇1000000
[ − 0.5 ] 补 = 1 ◇ 1000000 [-0.5]_补 = 1◇1000000 [−0.5]补=1◇1000000
总结:在计算机器码时,首先判断符号是正还是负,然后写出其原码,正数的反码、补码和原码都是一样的,所以只需要记住负数的反码和补码计算方式即可
记忆:先反再补,负数反码按位取反、负数补码为反码末尾+1(符号位始终不变)
如有错误,欢迎评论留言指正
机器码中的原码,反码,补码计算规则相关推荐
- 计算机中的原码,计算机中的原码反码补码移码
计算机中的原码反码补码移码 原码 数值 X 的原码记为 [X]原,如果机器字长为 n (即采用 n 个二进制位表示数据),则最高位是符号位,0 表示正号,1 表示负号,基余的 n~1 位表示数值的绝对 ...
- 二进制、八进制、十六进制和十进制的相互转换,原码反码补码计算以及Java中数字的存储
1. Java中数字默认是十进制,二进制.八进制以及十六进制的表示如下 2. 二进制.八进制.十六进制和十进制的相互转换 2.1 为了不累赘描述,本文以百度的二进制小数转换为十进制小数为例,如下图 2 ...
- c语言中的原码反码补码,c语言中的原码 反码 补码
陈独秀的秘密 所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,"0"表示正,"1"表示负,其余位表示数值的大小. 反码表示法规定:正数的反码与其原码 ...
- (转)java 原码反码补码计算 以及 取反运算,原码反码补码运算公式
[README] 转自: https://www.zhangshilong.cn/work/289454.html 1. 原码.反码.补码: (1)在Java中,所有数据的表示方式都是以补码形式来表示 ...
- 原码 反码 补码 计算
概念了解: 对于一个数值,计算机使用一定的编码方式进行存储,原码,反码,补码是机器存储一个具体数字的编码方式. 1,原码 第一位为符号位,其余位表示值,正数符号位取反为负数. 如果是8位二进制: [+ ...
- 原码 反码 补码的简单计算附例题
原码 反码 补码 对计算机中常见数据简单分类 机器数 与 真值 原码 反码 补码 扩展 对计算机常见数据的分类 机器数 就是数值在计算机中的二进制表现形式 机器数在计算机中有符号,使用 最高位表示符号 ...
- c语言原码 补码 反码,C语言 原码--反码--补码
//原码,反码,补码 #include #include //数值的表示方法--原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数: ...
- 关于计算机中 原码, 反码, 补码 详解
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...
- [例题详解]真值 机器数概念 | 原码 反码 补码 移码 概念及加减计算
目录 真值和机器数 原码 反码 补码 移码 对比记忆 | 原 反 补 移码 加减法 | 原码 补码 结语 | 大学生学习复习资料 真值和机器数 真值:-5.+10 机器数(带符号数)(= 符号位 [0 ...
- 机器码 原码 反码 补码
一个具体的数值在计算机内存中是以补码的形式存储的, 用补码存储的优点: 1.没有+0 和 -0 之分 都是0000 0000 2.使用补码,最高位的符号位可以当作普通的数值位来运算,会简化cpu的设 ...
最新文章
- Sparse low rank approximation
- mysql中的if else decode
- DM8168 OpenCV尝试与评估(编译ARM版OpenCV)
- python matlabplot animate 刷新_matlab动态绘图Animation
- leetcode 删除链表的倒数第N个节点
- 华为nova 5全新外观曝光:水滴全面屏设计 边框下巴极窄
- java vm for mac_Java VisualVM for Mac 构建方法
- python sys与shutil模块
- IntelliJ IDEA使用技巧(二)——添加jar包
- Rust: codewars 的Duplicate Encoder
- 使用sql语句直接修改数据库密码的解决方案
- idm站点抓取不了html,IDM站点抓取功能使用详解(下)
- 京东发力团购欲摘桃 团购市场继续动荡
- 我要创办一家公司,干翻JetBrains和IDEA!
- 企业物流管理系统使用教程
- 一部保护基本权利的欧盟人工智能法:一份民间机构的声明
- 怎样把旧电脑数据迁移到新电脑
- 召回率 matlab代码,召回率和精度(示例代码)
- 【javaScript】获取某年某月的的最后一天(即当月天数) 妙用
- 【一】VVC理论知识之图像块划分