c语言学习笔记(12)——补码
补码
编码
在计算机中存储数据的方式
原码
也叫 符号——绝对值码
最高位0表示正 1表示负, 其余二进制位是该数字的绝对值的二进制位
如 5 ———— 00000101
-5 ———— 11110101
原码简单易懂
加减运算复杂
存在加减乘除四种运算,增加了CPU运算的复杂度
零的表示不唯一
反码
反码运算不便,也没有在计算机中应用
移码
移码表示数值平移n位, n称为移码量
移码主要用于浮点数的阶码的存储
补码
十进制转二进制
正数转二进制
除2取余,直至商为零,余数倒叙排序
负数转二进制
先求与该负数相对应的正数的代码,然后将
所有位取反,末尾加1,不够位数时,左边补1
零的二进制是零
----------------------------------------------------------------------
/*
一个验证程序
2012年2月5日20:20:26
*/
# include <stdio.h>
int main(void){
int i = -100;
printf("%#x\n", i);
/*
100转十六进制64----->二进制 0110 0100---->取反 1001 1011
加1 1001 1100 末尾加1 0xffffff9c
*/
return 0;
}
输出结果:0xffffff9c
----------------------------------------------------------------------
二进制转十进制
如果首位是0,则表明是正数,按普通方法来求
如果首位是1,则表明是负整数
将所有位取反,末尾加1,所得数字就是该负数的绝对值
------------------------------------------------------------------------
/*
一个验证程序
2012年2月5日20:30:42
*/
# include <stdio.h>
int main(void){
int i = 0xffffffef;
/*
1111....101111
取反加1后 0000....010001 对应十六进制11 十进制 17
*/
printf("%d\n", i);
return 0;
}
输出结果:-17
------------------------------------------------------------------------
1.在vc++6.0中一个int类型的变量所能存储的数字的范围是多少?
8位二进制所代表的十进制示意图
二进制 十进制
0000 0000 ----------- 0
0000 0001 ----------- 1
.........
0111 1111 ----------- 127
1000 0000 --取反加1-- -128
1000 0001 --取反加1-- -127
1000 0010 --取反加1-- -126
.........
1111 1111 --取反加1-- -1
所以int类型变量所能存储的最大正数用十六进制表示是: 0x7fff ffff
int类型变量所能存储的绝对值最大的负数用十六进制表示是:0x8000 0000
------------------------------------------------------------------
/*
一个验证程序
2012年2月5日20:57:10
*/
# include <stdio.h>
int main(void){
char cha = 0x7f; //0111 1111 127
printf("%d\n", cha);
char ch = 0x80; //1000 0000 -128
printf("%d\n", ch);
char c = 128; // 1000 0000 -128
printf("%d\n", c);
return 0;
}
输出结果:
127
-128
-128
------------------------------------------------------------------
2.最小负数的二进制代码是多少?
3.最大正数的二进制代码是多少?
4.已知一个整数的二进制代码求出原始的数字
5.数字超过最大正数会怎样?
6.不同类型数据的相互转换
c语言学习笔记(12)——补码的更多相关文章
- HTML语言学习笔记(会更新)
# HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
- Go语言学习笔记十三: Map集合
Go语言学习笔记十三: Map集合 Map在每种语言中基本都有,Java中是属于集合类Map,其包括HashMap, TreeMap等.而Python语言直接就属于一种类型,写法上比Java还简单. ...
- 《C# 语言学习笔记》——定义属性
属性定义的方式与字段类似,但包含的内容比较多. 属性拥有两个类似于函数的块,一个块用于获取属性的值,另一个块用于设置属性的值.这两个块也称访问器,分别用于get和set关键字定义,可以用于控制对属性的 ...
- 《C# 语言学习笔记》——目录
C# 简介 变量和表达式 流程控制 3.1 布尔逻辑 3.2 goto语句 3.3 分支 3.4 循环 变量的更多内容 4.1 类型转换 4.2 复杂的变量类型 4.3 字符串的处理 函数 5.1 定 ...
- matlab学习笔记12单元数组和元胞数组 cell,celldisp,iscell,isa,deal,cellfun,num2cell,size
一起来学matlab-matlab学习笔记12 12_1 单元数组和元胞数组 cell array --cell,celldisp,iscell,isa,deal,cellfun,num2cell,s ...
- Go语言学习笔记(1)——顺序编程
Go语言学习笔记这一堆主要是<Go语言编程>(人民邮电出版社)的读书笔记.中间会穿插一些零碎的点,比如源码学习之类的.大概就是这样吧. 1. 顺序编程 1.1 变量 变量的声明: var ...
- Ext.Net学习笔记12:Ext.Net GridPanel Filter用法
Ext.Net学习笔记12:Ext.Net GridPanel Filter用法 Ext.Net GridPanel的用法在上一篇中已经介绍过,这篇笔记讲介绍Filter的用法. Filter是用来过 ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
- 2017-05-4-C语言学习笔记
C语言学习笔记... ------------------------------------ Hello C语言:什么是程序:程序是指:完成某件事的既定方式和过程.计算机中的程序是指:为了让计算机执 ...
随机推荐
- Shiro的Filter机制详解---源码分析(转)
Shiro的Filter机制详解 首先从spring-shiro.xml的filter配置说起,先回答两个问题: 1, 为什么相同url规则,后面定义的会覆盖前面定义的(执行的时候只执行最后一个). ...
- 洛谷 偷天换日&&“访问”美术馆
典型的树形DP 按理说是先做“访问美术馆”再做偷天换日. 但是我先做了偷天换日然后再做的“访问”美术馆 DP方程好推,偷天换日在遇到有展品的时候做背包,因为是先做的偷天换日,所以把偷天换日的输入w,c ...
- 3D 应用程序性能
原文:3D 应用程序性能 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/m0_37591671/article/details/74595999 3 ...
- 【36.86%】【codeforces 558B】Amr and The Large Array
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 使用DatagramSocket与DatagramPacket传输数据 分类: B1_JAVA 2013-10-12 13:00 1936人阅读 评论(0) 收藏
参考传智播客毕向东JAVA视频. 注: DatagramSocket发送的每个包都需要指定地址,而Socket则是在首次创建时指定地址,以后所有数据的发送都通过此socket. A socket is ...
- AOP 专题
Spring框架有两个核心思想:IOC和AOP Spring IOC指的是控制翻转,使用普通JAVA Bean,在运行时由Spring容器统一管理和串联,服务于不同的流程,在开发过程中对Spring ...
- HTTPS和SSL/TLS协议
要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ...
- catalina.out 和 catalina.log 的区别和用途
catalina.out catalina.out其实是tomcat的标准输出(stdout)和标准出错(stderr),这是在tomcat的启动脚本里指定的,如果没有修改的话stdout和stder ...
- 《编程导论(Java)·3.2.4 循环语句》
本文全然复制<编程导论(Java)·3.2.4 循环语句>的内容.除[]中的说明文字.请阅读和比較其它编程教材. 我知道.假设我是一个刚開始学习的人,<编程导论(Java)>非 ...
- 图像数据的 normalization
Normalization的方法 matlab 工具函数(三)-- normalize(归一化数据) 1. 加载指定标准差的噪声 im_clean = double(imread('Lena512.p ...