C/C++(基础编码-补码详解)
两个数的交换
1.引入第三者。
2.求和运算,求差。(这样会产生内存溢出)
3.异或运算
a = a^b;
b = a^b;
a = a^b;
8b(bit位) = 1B(Byte=字节)//最小单位是字节
32位机:2^32 = 4G寻址能力
(王爽--统一编址,汇编语言)
char类型一个字节,8位。[-128,127],2^8=256种,
why?[-128,127];深层的编码采用补码,1,表示负数。
正常的:
0000 0000 1
0000 0001 2
0111 1111 127
...
1000 0000 -0
...
1111 1111 -127
这样1+-1=-2;
补码规则:
0000 0000 0
0000 0001 1
0111 1111 127
...
1000 0000 -128
-127
...
1111 1111 -1
计算机只会做加法,1+-1=0;0000 0001 + 1111 1111= 0000 0000;高位溢出得0;
#include<stdio.h>
int main() {
char a = 0;
disBin(a);
char b = 1;
disBin(b);
char c = 2;
disBin(c);
char d = 127;
disBin(d);
char e = -128;
disBin(e);
char f = -2;
disBin(f);
char g = -1;
disBin(g);
}
//打印一个数的二进制
void disBin(char ch) {
int i = 8;
while(i--) {
if((1<<i) & ch) {
printf("1");
}else {
printf("0");
}
if(i%4 == 0) {
printf(" ");
}
}
putchar(10);
}
补码的出现所有的乘法,除法,减法,都用减法实现。
补码的规则:(运算互为逆运算)
所有的整数的补码是他本身,所有的负数,取绝对值后取反,加一。
逆过程的运算,最高位是1,是负数。全部参与运算取反加一。
0的补码是0;
补码的运算相当于12进制的时钟,其中顺时针为正,逆时针为负。例如:当前时钟在3点,要点到8点。可以顺时针一可以逆时针。3+5=8,(3+12)-7=8;中的12溢出,在这之中相加互为12的称之为“补数”。
计算机中的所有减法,乘法,除法都可有加法计算。
1-2=1+(-2),也就是相当于1加上-2的补码。
注意:一个8位的空间,如果用来表示无符号数0-255(0-28-1),如果表示有符号的数:-128-127(-27-2^7-1)。
sizeof();
sizeof(char);//1字节
sizeof(short);//2字节
sizeof(int);//4字节
sizeof(long);//4字节
sizeof(long long);//8字节
1字节 char
0 - 255 unsigned char(无符号) 0 -2^8-1
-128 - 127 signed char -2^7 -2^7-1
2字节 short
0 - 65535 0 - 2^16-1
-32768 - 32767 -2^15 - 2^15-1
4字节 int
0 - 2^32(40亿)
-2^31 - 2^31-1
long(4个字节)没有扩展,
long long(8个字节)。
0 - 2^64
-2^62 - 2^63-1
int 基本整型 理想的32位机,地址总线和数据总线都是32位的。
有效数字,从左至右不为0的数字。超出类型的限制之后的数字不保证正确。
float,doouble;
数据类型图:

C/C++(基础编码-补码详解)的更多相关文章
- (转)总结之:CentOS 6.5 MySQL数据库的基础以及深入详解
总结之:CentOS 6.5 MySQL数据库的基础以及深入详解 原文:http://tanxw.blog.51cto.com/4309543/1395539 前言 早期MySQL AB公司在2009 ...
- 基础拾遗------redis详解
基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...
- 基础拾遗------webservice详解
基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...
- Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例)
Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编辑配置文件(pml.xml)(我 ...
- python基础之函数详解
Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...
- java基础之:详解内部类(转载)
可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 第一次见面 内部类我们从外面 ...
- python 3.x 爬虫基础---http headers详解
前言 上一篇文章 python 爬虫入门案例----爬取某站上海租房图片 中有对headers的讲解,可能是对爬虫了解的不够深刻,所以老觉得这是一项特别简单的技术,也可能是简单所以网上对爬虫系统的文档 ...
- 深度学习基础(CNN详解以及训练过程1)
深度学习是一个框架,包含多个重要算法: Convolutional Neural Networks(CNN)卷积神经网络 AutoEncoder自动编码器 Sparse Coding稀疏编码 Rest ...
- 基础知识redis详解--【Foam番茄】
Redis 学习方式: 上手就用 基本的理论先学习,然后将知识融汇贯通 nosql讲解 为什么要用Nosql 现在都是大数据时代 大数据一般的数据库无法进行分析处理了 至少要会Springboot+S ...
随机推荐
- Windows7 安装ubuntu双系统
家里的老笔记本是MBR分区,不支持EFI , 一开始是用U盘安装的,还对着ubuntu官网的教程,下载了官方推荐的那个u盘引导工具,安装依然会报错, 网上查询也有很多种说法,也有说是bug的,无论如何 ...
- [USACO5.4]奶牛的电信Telecowmunication(网络流)
P1345 [USACO5.4]奶牛的电信Telecowmunication 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮 ...
- 05-数据类型转换(bool转换)
05-数据类型转换(bool转换)
- NYOJ_77 开灯问题
题目地址 分析: 用一个数组来保存每盏灯的操作的次数.推断奇偶就可以推断灯的状态. 最后的输出格式须要注意一下空格的位置,思路就是现输出一个.剩下来的输出在前面加一个空格. 空格用_表示: 1_3_5 ...
- 杭电 HDU ACM 2795 Billboard(线段树伪装版)
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- CSS 文本字体颜色设置方法(CSS color)
CSS 文本字体颜色设置方法(CSS color) 一.认识CSS 颜色(CSS color) 这里要介绍的是网页设置颜色包含有哪些:网页颜色规定规范. 1.常用颜色地方包含:字体颜色.超链接颜色.网 ...
- C#泛型链表Demo
/// <summary> /// 节点 /// </summary> /// <typeparam name="T"></typepar ...
- POJ 1167 The Buses 暴搜+剪枝
思路: 先把能选的路线都预处理出来 按照能停的车的多少排个序 (剪枝1) 搜搜搜 如果当前剩的车÷当前能停车的多少+deep>=ans剪掉 (剪枝2) //By SiriusRen #inclu ...
- HDU 5370 Tree Maker
一个显然的结论是,一棵n个结点的二叉树的形态数,是Catalan数第n项.
- C++中explicit关键字作用
explicit是c++中不太常用的一个关键字,其作用是用于修饰构造函数,告诉编译器定义对象时不做隐式转换. 举例说明: include <iostream> include <st ...