1、

原码:将符号位数码化了的数,其中“+”用0表示,“-”用1表示。

反码:正数的反码表示与原码表示一样;负数的反码表示是原码表示的符号位不变,数值位逐位取反。

补码:正数的补码表示与原码表示一样;负数的补码表示是原码表示的符号位不变,数值位逐位取反后最低位加1(反码表示最低位加1)。

例:(假如以八位二进制表示)

[+63]  原=0011  1111       反=0011  1111         补=0011  1111

[-63]   原=1011  1111       反=1100  0000         补=1100  0001

2、负数的位操作(以与为例)

(1)计算机中,无论正数还是负数,都是以其补码形式存储的;

(2)如果位操作后的结果最高位为“1”,说明它是负数的补码,转化为实际的整数时要逆操作,即-1(减一)后保持最高位不变再取反。

(3)一个数(如b)的相反数(-b)的补码,等于该数的补码取反,然后加1。

比如:

-5  原码=1000 0101     反码=1111 1010     补码=1111 1011

5   原码=0000 0101     反码=0000 0101    补码=0000 0101

可以进一步发现,-5 & 5 = 0000 0001,同理 -6 & 6 = 0000 0010,-7 & 7 =0000 0001……

这是一个很有用的性质,即返回(某个数的绝对值,如-6的绝对值是6)的(二进制表示的,6的二进制表示是0000 0110)从右往左第一个为1(第一位为1)的所表示的整数(0000 0010)。

原码、反码、补码,以及负数的位操作相关推荐

  1. 原码反码补码之间运算转换

    1. 正数的原码=反码=补码 2. 负数的反码=在其原码的基础上, 符号位不变,其余各个位取反 负数的补码=在反码的基础上+1 负数的补码=在原码的基础上, 符号位不变, 其余各位取反, 最后末位+ ...

  2. C语言基础(二)—— 常量与变量、数据类型、进位制、关键字、原码反码补码、限定符、字符串格式化输入输出

    1. 常量与变量 1.1 关键字 1.2 数据类型 数据类型的作用:编译器预算对象(变量)分配的内存空间大小. 1.3 常量 在程序运行过程中,其值不能被改变的量 常量一般出现在表达式或赋值语句中 整 ...

  3. 关于计算机中 原码, 反码, 补码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  4. 原码, 反码, 补码, 移码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  5. 关于 原码 反码 补码 位运算

    二进制 原码:最高位为符号位,0为正  1为负 正数的原码 反码 补码 都是相同的 反码:负数的反码为原码符号位不变 其它对应变化(1变0 0变1) 补码:等于 反码+1 3^-3 =? 运算过程 - ...

  6. 10.原码 反码 补码

    +7的原码:0000 0111 -7的原码:1000 0111   第一位0代表正数,1代表负数,第一位为符号位 +7的反码:0000 0111 正数反码和原码一样 -7的反码:1111 1000   ...

  7. java进制原码_Java 一一 进制、原码 反码 补码、移位操作

    进制 二进制 和 十进制 相互转换 十进制 和 十六进制 相互转换 原码,反码,补码 原码.反码.补码: 在计算机内, 有符号数有三种表示法: 原码, 反码, 补码. 所有的数据的运算都是采用 补码 ...

  8. 原码 反码 补码 详解

    一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放 ...

  9. python二进制反码例题_python中的进制转换和原码,反码,补码

    python中的进制转换和原码,反码,补码 计算机文件大小单位 b = bit 位(比特) B = Byte 字节 1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b 1KB ...

  10. 原码 反码 补码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

最新文章

  1. 迭代器报“vector iterators incompatible”错的几种可能
  2. matlab 小波滤波器系数导出函数,小波基函数和滤波系数.ppt
  3. 编程思考:对象生命周期的问题
  4. java swing游戏_Java Swing井字游戏
  5. 为什么我不看好PWA
  6. 19. 顺时针打印矩阵
  7. android Fragment缓存问题
  8. 收集的Word2007技巧大全
  9. Horizontalscrollview
  10. python实现滚动截屏功能
  11. DBUtils工具类的使用方法详解
  12. 这个“单”到底应该谁来买?
  13. 一名蒟蒻OIer(或许还算不上?)的NOI_Online2022的日录
  14. 23.卷积神经网络实战-ResNet
  15. 高效通过,PMI-ACP 备考知识突击(九阴真经版)
  16. 2020年第十一届蓝桥杯A组省赛
  17. Spring/Boot/Cloud系列知识:SpringMVC进行HTTP信息接收和发送的过程(1)
  18. 清华计算机系2018录取分数线,2018年清华大学各省录取分数线是多少?看看你离清华大学差多少分...
  19. 除了菊纹识别,AI还有哪些奇奇怪怪的识别能力?
  20. 2022年乡村医生考试复习题及答案

热门文章

  1. STS的安装教程-鹏鹏
  2. ASP.NET 2.0服务器控件与组件开发中文版即将出版
  3. mysql查看binlog日志内容
  4. Linux中断 - tasklet
  5. 如果备份还原SecureCRT、Xshell远程工具远程
  6. android之自定义广播
  7. 修复./mysql/proc
  8. redis 主从复制 [转]
  9. high-speed A/D performance metrics and Amplifie...
  10. 61条Java面向对象设计的经验原则