c语言实现补码转换成原码,(转)C语言之原码、反码和补码(示例代码)
原码、反码和补码
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语言之原码、反码和补码(示例代码)相关推荐
- c语言中将整数转换成字符串_在C语言中将ASCII字符串(char [])转换为八进制字符串(char [])...
c语言中将整数转换成字符串 Given an ASCII string (char[]) and we have to convert it into octal string (char[]) in ...
- c语言中将整数转换成字符串_在C语言中将ASCII字符串(char [])转换为十六进制字符串(char [])...
c语言中将整数转换成字符串 Given an ASCII string (char[]) and we have to convert it into Hexadecimal string (char ...
- c语言unsigned char转换成unsigned short,有关c语言数据类型转换之char,unsigned char,unsigned short...
这是一道朗讯的笔试题(我把一些相关资料汇总了一下,希望大家能进来广泛的探讨,不甚感激!) #include int main() { char ca; unsigned char ucb; unsi ...
- 怎么用汇编语言转换c语言程序设计,C语言是如何转换成汇编语言的6个步骤带你解析...
大家都知道计算机只能处理和识别二进制指令,而我们利用各种高级编程语言所编写的程序,要经过一些列的处理步骤,最终转变为汇编指令,再最后转变为机器指令. C语言 以上这些转变是如何发生的就属于大名鼎鼎的& ...
- c语言汇编6,C语言是如何转换成汇编语言的6个步骤带你解析
大家都知道计算机只能处理和识别二进制指令,而我们利用各种高级编程语言所编写的程序,要经过一些列的处理步骤,最终转变为汇编指令,再最后转变为机器指令. C语言 以上这些转变是如何发生的就属于大名鼎鼎的& ...
- 从编译原理的角度看C语言是如何转换成汇编语言的?
大家都知道计算机只能处理和识别二进制指令,而我们利用各种高级编程语言所编写的程序,要经过一些列的处理步骤,最终转变为汇编指令,再最后转变为机器指令. 以上这些转变是如何发生的就属于大名鼎鼎的" ...
- OFD文件转换成PDF格式,Java语言实现
OFD文件转换成PDF格式,Java语言实现 我个人的思路大致是这样的.首先在指定路径创建一个文件夹,然后每次要转换的时候都把OFD文件统一放到指定的文件夹内进行转换.这样写代码的时候只需要循环遍历一 ...
- Android录屏并利用FFmpeg转换成gif(二)交叉编译FFmpeg源码
Android录屏并利用FFmpeg转换成gif(二) 写博客时经常会希望用一段动画来演示app的行为,目前大多数的做法是在电脑上开模拟器,然后用gif录制软件录制模拟器屏幕,对于非开发人员来讲这种方 ...
- c语言实现补码转换成原码(原->补同理)
说明: 反码=原码符号位不变,其余按位取反: 补码=原码符号位不变,其余按位取反,再加1: 补码的补码就是原码: 补码和原码相互转换,代码实现: /* ...
最新文章
- 计算机学院杨洋,美国莱特州立大学吴志强教授访问计算机科学与技术学院
- 阿米洛键盘取消win_【机械键盘】2020年双十二那些值得购买的机械键盘推荐
- 主流浏览器js 引擎内核市场份额attialx总结vOa9
- 中国联邦学习「五大流派」
- 国外java开源网站聚合
- 【C/C++ string】之strcpy函数
- 将EXCEL中的列拼接成SQL insert插入语句
- letecode [160] - Intersection of Two Linked Lists
- leetcode 438. Find All Anagrams in a String | 438. 找到字符串中所有字母异位词(Java)
- linux上安装python2.6.9_在Linux CentOS 6.6上安装Python 2.7.9
- Atitit table的读取与遍历 jquery jsoup 目录 1. atitit.gui控件的定位与选择器	1 2. 读取表格流程 遍历表格table	1 3. W3cdom标准化	1
- 为啥OpenStack厂商要参加双态运维大会?
- 电机控制-H 桥电路 控制方式简单解析
- idea无法找到主启动类_IDEA打包jar-解决找不到或无法加载主类 main的问题
- 平衡小车制作系列之一——捋清制作流程
- http://www.jb51.net/article/84149.htm
- 炫我科技渲染集群管理软件
- 于是,我搭了个自己的博客网站
- 根号2计算机代码,根号 2 的程序计算方法
- php后端上传文件,php实现文件上传方法_后端开发