原码、反码和补码

1).数据在内存中存储的时候都是以二进制的形式存储的.

int num = 10;

原码、反码、补码都是二进制.只不过是二进制的不同的表现形式.

数据是以补码的二进制存储的.

2). 1个int类型的变量.在内存中占据4个字节, 32位.

00000000 00000000 00000000 00000000

在不考虑正负的情况下.1个int类型的变量可以表示接近43e种数据.

为了可以表示正负性.使用最高为来表示这个数的正负性.

如果最高为是0 那么表示这个数是1个正数

如果最高为是1 那么表示这个数是1个负数.

所以,来表示数据的只有31位. 所以,1个int类型的变量.

最小值是: -2147483648  最大值是:2147483647

3). 原码

最高位表示符号位. 剩下的位数.是这个数的绝对值的二进制.

10的原码.

00000000 00000000 00000000 00001010

-8的原码.

10000000 00000000 00000000 00001000

绝对值: 正数的绝对值是自己,负数的绝对值去掉负号.

-20.

10000000 00000000 00000000 00010100

4). 反码

正数的反码就是其原码.

负数的反码就是在其原码的基础之上 符号位不变,其他位取反.

10的反码:

10的原码:00000000 00000000 00000000 00001010

10的反码:00000000 00000000 00000000 00001010

-8

-8的原码:10000000 00000000 00000000 00001000

-8的反码:11111111 11111111 11111111 11110111

5). 补码

正数的补码就是其原码.

负数的补码就是在其反码的基础之上+1

10.

10的原码:00000000 00000000 00000000 00001010

10的反码:00000000 00000000 00000000 00001010

10的补码:00000000 00000000 00000000 00001010

-8

-8的原码:10000000 00000000 00000000 00001000

-8的反码:11111111 11111111 11111111 11110111

-8的补码:11111111 11111111 11111111 11111000

6). 任何数据都是以其二进制的补码形式存储在内存中的.

int num = -8;

7). 为什么数据要以补码的形式存储呢?

计算机中只有加法没有减法.为了更加低成本的计算出结果,所以使用补码来存储数据.

3 + 2;

3 - 2; 这个减法运算对于计算机而言它的理解是 3 + (-2); 1

使用原码计算.

3的原码    00000000 00000000 00000000 00000011

-2的原码   10000000 00000000 00000000 00000010

----------------------------------------------------

10000000 00000000 00000000 00000101 结果是1个负数明显是不对的

使用反码计算.

3 的反码:  00000000 00000000 00000000 00000011

-2的反码:  11111111 11111111 11111111 11111101

--------------------------------------------------

00000000 00000000 00000000 00000000        0

使用补码计算

3 的补码:   00000000 00000000 00000000 00000011

-2的补码:   11111111 11111111 11111111 11111110

-------------------------------------------------

00000000 00000000 00000000  00000001       1

注:使用补码来做运算效率是最高的.

c语言实现补码转换成原码,(转)C语言之原码、反码和补码(示例代码)相关推荐

  1. c语言中将整数转换成字符串_在C语言中将ASCII字符串(char [])转换为八进制字符串(char [])...

    c语言中将整数转换成字符串 Given an ASCII string (char[]) and we have to convert it into octal string (char[]) in ...

  2. c语言中将整数转换成字符串_在C语言中将ASCII字符串(char [])转换为十六进制字符串(char [])...

    c语言中将整数转换成字符串 Given an ASCII string (char[]) and we have to convert it into Hexadecimal string (char ...

  3. c语言unsigned char转换成unsigned short,有关c语言数据类型转换之char,unsigned char,unsigned short...

    这是一道朗讯的笔试题(我把一些相关资料汇总了一下,希望大家能进来广泛的探讨,不甚感激!) #include int main() { char  ca; unsigned char ucb; unsi ...

  4. 怎么用汇编语言转换c语言程序设计,C语言是如何转换成汇编语言的6个步骤带你解析...

    大家都知道计算机只能处理和识别二进制指令,而我们利用各种高级编程语言所编写的程序,要经过一些列的处理步骤,最终转变为汇编指令,再最后转变为机器指令. C语言 以上这些转变是如何发生的就属于大名鼎鼎的& ...

  5. c语言汇编6,C语言是如何转换成汇编语言的6个步骤带你解析

    大家都知道计算机只能处理和识别二进制指令,而我们利用各种高级编程语言所编写的程序,要经过一些列的处理步骤,最终转变为汇编指令,再最后转变为机器指令. C语言 以上这些转变是如何发生的就属于大名鼎鼎的& ...

  6. 从编译原理的角度看C语言是如何转换成汇编语言的?

    大家都知道计算机只能处理和识别二进制指令,而我们利用各种高级编程语言所编写的程序,要经过一些列的处理步骤,最终转变为汇编指令,再最后转变为机器指令. 以上这些转变是如何发生的就属于大名鼎鼎的" ...

  7. OFD文件转换成PDF格式,Java语言实现

    OFD文件转换成PDF格式,Java语言实现 我个人的思路大致是这样的.首先在指定路径创建一个文件夹,然后每次要转换的时候都把OFD文件统一放到指定的文件夹内进行转换.这样写代码的时候只需要循环遍历一 ...

  8. Android录屏并利用FFmpeg转换成gif(二)交叉编译FFmpeg源码

    Android录屏并利用FFmpeg转换成gif(二) 写博客时经常会希望用一段动画来演示app的行为,目前大多数的做法是在电脑上开模拟器,然后用gif录制软件录制模拟器屏幕,对于非开发人员来讲这种方 ...

  9. c语言实现补码转换成原码(原->补同理)

    说明:         反码=原码符号位不变,其余按位取反:         补码=原码符号位不变,其余按位取反,再加1:         补码的补码就是原码: 补码和原码相互转换,代码实现: /* ...

最新文章

  1. 在iOS平台上使用TensorFlow教程(上)
  2. Python Django 自定义Manager重写objects.create()方法代码示例
  3. 多线程小抄集(新编三)
  4. 深度学习pytorch--线性回归(一)
  5. 【转】DICOM:DICOM三大开源库对比分析之“数据加载”
  6. python计算入门_Python入门教程02-01(计算机核心基础)
  7. 倒序存放数组java_Java集合大全Map,Set,List
  8. Python入门(06) -- 正则表达式
  9. hash值为负_java – HashCode给出负值
  10. python中yield的使用_python中yield的用法详解-转载
  11. Jhipster创建微服务【0】——踩坑
  12. 2011年-2019年华东地区产业发展、人口以及平均工资简析
  13. MySQL高级部分理论知识细讲
  14. radio默认选中并显示相应信息 php,php selectradio和checkbox默认选择的实现方法详解...
  15. Python OCR 识别图片内容
  16. html:checkbox无法uncheck
  17. 机器学习数据集(训练集、测试集)划分方法
  18. 丹尼尔·克雷格詹姆斯·邦德锻炼培训
  19. ubuntu查看cudnn是否安装成功_查看cudnn是否安装
  20. 公布旗下(飞秋)系列软件工作原理

热门文章

  1. 2023年java基础面试题,适合年初找工作的小伙伴
  2. 西门子S7-1200二轴V80伺服写字案例程序运动控制 写字机自动化机械控制,高速脉冲
  3. 企业成长能力分析-主营业务收入增长率、主营利润增长率、净利润增长率、总资产增长率、固定资产增长率...
  4. Flash从入门到实践系列(一):环境安装
  5. 怎样编写Apple Push Notification服务器
  6. 天津工业大学计算机学院教务处,天津工业大学教务管理系统入口http://jwc.tjpu.edu.cn/...
  7. 人不是被事物本身困扰是什么理论_心理学:人不是被事情本身所困扰,而是被其对事情的看法所困扰!...
  8. 数据结构(二十一)——图和图的应用
  9. 2015年电子设计竞赛—增益可控射频放大器
  10. python 化学计量学_如何入门化学计量学?有哪些推荐书目?