原码:就是我们自己看的,以及机器输出给我们看的

补码:机器永远是以补码的形式将数据保存在计算机中

正数:

    原码=反码=补码

负数:

    反码:原码的符号位不变,其他位取反 ,1变0   0变1

    补码:机器存储数据的方式 等于 反码+1

例子:

    

96(默认int数据类型):
原码:00000000 00000000 00000000 01100000 共32位
补码:00000000 00000000 00000000 01100000

-96:
原码:10000000 00000000 00000000 01100000 共32位
反码:11111111 11111111 11111111 10011111
补码:11111111 11111111 11111111 10100000

举个例子会更容易对他们加深理解

(-26) ^ 38为多少(^是异或)

1.我们知道我们做运算时得把其数字变作补码

 则先把(-26)和38都变为补码

-26:

原码:10000000 00000000 00000000 00011010

反码:11111111 11111111 11111111 11100101

补码:11111111 11111111 11111111 11100110

38:

原码:00000000 00000000 00000000 00100110
补码: 正数的补码=原码
   00000000 00000000 00000000 00100110

2.我们得把两个数的补码进行异或运算(位相同为0,不同为1)

      11111111 11111111 11111111 11100110
      00000000 00000000 00000000 00100110 
      ----------------------------------------------------------
补码:    11111111 11111111 11111111 11000000

3.计算机要让我们看到,得变回反码后变为原码

反码: 补码-1  
    11111111 11111111 11111111 10111111
原码: 10000000 00000000 00000000 01000000    = -64

最后我们算出(-26) ^ 38结果为-64

我们用电脑验证一下

耶,结果和算的一样

通过这个例子,把负数和正数的原码反码补码关系可以弄清楚,还顺带进行了异或的操作,希望大家能理解。

C语言学习笔记之原码反码补码的更多相关文章

  1. C语言:整数保存 原码 反码 补码

    #include <stdio.h> /* 本题结果为:-4 short类型占据2字节 ;赋值后实际占据了3个字节,所以有溢出警告提示,结果只保留0xfffc 保存二进制:1111 111 ...

  2. Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  3. C语言原码反码补码与位运算.

      目录:     一.机器数和真值     二.原码,反码和补码的基础概念     三.为什么要使用原码,反码和补码     四.原码,补码,反码再深入     五.数据溢出测试     六.位运算 ...

  4. 「C语言」原码反码补码与位运算

    尽管能查到各种文献,亲自归纳出自己的体系还是更能加深对该知识的理解.     本篇文章便是在结合百度百科有关原码.反码.补码和位运算的介绍并深度借鉴了张子秋和Liquor相关文章后整理而出.   目录 ...

  5. 大数据学习--day02(标识符、变量、数据类型、类型转换、进制转换、原码反码补码)

    标识符.变量.数据类型.类型转换.进制转换.原码反码补码 标识符: java50个关键字不能做标识符,以数字开头不能做标识符(这个老是忘记写一个类名的时候) 变量: 变量分为成员变量和局部变量,注意作 ...

  6. 原码 & 反码 & 补码 & 详解

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

  7. Java 原码 反码 补码

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

  8. 位移&二进制转换&原码&反码&补码

    << 左移 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零. 格式 需要移位的数字 << 移位的次数 计算过程 1. 按二进制形式把所有的数字向左 ...

  9. JAVA:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题(5)

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

随机推荐

  1. JVM 专题六:运行时数据区(一)概述

    1. 运行时数据区架构图 2. 内存 内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行.JVM内存布局规定了JAVA在运行过程中内存申请.分配.管理的策略, ...

  2. java 基本语法(一) 关键字与标识符

    1.java关键字的使用定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)特点:关键字中所字母都为小写具体哪些关键字: 2.保留字:现Java版本尚未使用,但以后版本可能会作为关键字使用 ...

  3. mysql groupby 字段合并问题(group_concat)

    在我们的日常mysql查询中,我们可能会遇到这样的情况: 对表中的所有记录进行分类,并且我需要得到每个分类中某个字段的全部成员. 上面的话,大家看起来可能不太好懂,下面举一个例子来给大家说明. 现在我 ...

  4. 010.Nginx正反代理

    一 Nginx代理 1.1 Nginx代理概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器.同时也是一个IMAP.POP3.SMTP代理服务器.nginx可以作为一个HTT ...

  5. python基础算法

    一.简介 定义和特征 定义:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时 ...

  6. ES6面试

    未完持续 概念 ECMAScript6(以下简称ES6)是 JavaScript 语言的下一代标准,前者是后者的规格,后者是前者的一种实现. ES6(新增的)一些特性 1.变.常量:let声明变量,c ...

  7. WPF 有缩放时显示线条的问题

    公司项目已经开发好几年了,用的WPF开发的,期间遇到好多问题,都是些小细节.很久没有写博客了,以后有时间还是需要写写博客啊!作为分享也好.记录也好,利人利己嘛. 今天主要说一下显示线条的问题,因为我们 ...

  8. paypal支付平台如何使用二次验证码_虚拟MFA_两步验证_谷歌身份验证器?

    一般点账户名——设置——安全设置中开通虚拟MFA两步验证 具体步骤见链接 paypal支付平台如何使用二次验证码_虚拟MFA_两步验证_谷歌身份验证器? 二次验证码小程序于谷歌身份验证器APP的优势 ...

  9. 用Python爬取双色球开奖信息,了解一下

    1工具     2具体方法 1.使用python2.7编写爬取脚本 这里除了正常的爬取操作,还增加了独立的参数设定.如果没有参数,爬取的数据就在当前目录下:如果有参数,可以设定保存目录.保存文件名后缀 ...

  10. Python Python Python 100个练手项目

    1.淘宝模拟登录2.天猫商品数据爬虫3.爬取淘宝我已购买的宝贝数据4.每天不同时间段通过微信发消息提醒女友5.爬取5K分辨率超清唯美壁纸6.爬取豆瓣排行榜电影数据(含GUI界面版)7.多线程+代理池爬 ...