一、枚举

# include <stdio.h>

enum WeekDay  //定义了一个数据类型(值只能写以下值)
{
MonDay, TuesDay, WednesDay, ThursDay, FirDay, SaturDay, SunDay
};
int main(void){
enum WeekDay day = WednesDay;
printf("%d\n", day); return 0;
}

输出结果:2
把一个事物所有可能一一列举出来
优点:代码更安全
缺点:书写麻烦

二、补码

1、几个概念

编码:在计算机中存储数据的方式

原码:也叫 符号——绝对值码

最高位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

2、在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

忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(8)枚举、补码的更多相关文章

  1. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(2)准备知识

    一.变量为什么必须初始化? 在回答这个问题之前,我们先来运行一段代码: #include <stdio.h> int main(){ int i; printf("i=%d\n& ...

  2. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(5)有趣的指针

    一.指针是C语言的灵魂 # include <stdio.h> int main(){ int *p; //p是变量名,int *表示p变量存放的是int类型变量的地址,p是一个指针变量 ...

  3. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(3)输入输出函数

    一.基本的输入和输出函数的用法 1.printf()  //屏幕输出 用法: (1)printf("字符串\n"); (2)printf("输出控制符", 输出 ...

  4. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(1)GCC介绍及C语言编译过程

    一.GCC基本介绍 GCC(GNU Compiler Collection,GNU编译器套装),是一套由GNU开发的编程语言编译器.它是一套以GPL及LGPL许可证所发布的自由软件,也是GNU计划的关 ...

  5. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(9)链表

    我们至少可以通过两种结构来存储数据 数组 1.需要一整块连续的存储空间,内存中可能没有 2.插入元素,删除元素效率极低. 3.查找数据快 链表 1.查找效率低 2.不需要一块连续的内存空间 3.插入删 ...

  6. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(7)结构体

    一.为什么需要结构体? 为了表示一些复杂的事物,而普通类型无法满足实际需求 二.什么叫结构体? 把一些基本类型组合在一起形成的一个新的复合数据类型叫做结构体. 三.如何定义一个结构体? 第一种方式: ...

  7. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(6)动态内存分配

    一.传统数组的缺点: 1.数组的长度必须事先定制,且只能是常整数,不能是变量 int len = 5; int a[len]; //error 2.传统形式定义的数组,该程序的内存程序员无法手动释放 ...

  8. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(4)for == while ?

    一.for和while等价替换 int i = 1; for (i; i<=100; i++){ sum = sum + 1; } int i = 1; while(i<=100){ su ...

  9. 闲里偷忙的CPU-某个kwoker进程忙

    https://zhuanlan.zhihu.com/p/34311472 有一类比较特殊的CPU使用率问题,这类问题的特点是,系统平均CPU使用率很低,但是个别CPU的使用率非常高.今天借助这个真实 ...

随机推荐

  1. Java学习笔记三.2

    5.继承 //Java中所有对象都显式/隐式的继承子Object类 class fu{ fu(){ System.out.println("fu..."+getNum()); sh ...

  2. 基于jQuery的楼层案例

    ~(function() { var flag = true; //点击切换效果 $(".oDR7_asideItem:not(:first)").click(function() ...

  3. Redis学习总结和相关资料

    因为别人都在用Redis,所以我不得不用Redis.  听起来感觉我很菜的样子,事实上和菜没有关系.  一是由于别人都用,作为后来者,没有"先发"优势,只能顺着别人的思路来做.当前 ...

  4. 一起talk C栗子吧(第九十八回:C语言实例--使用消息队列进行进程间通信二)

    各位看官们,大家好,上一回中咱们说的是使用消息队列进行进程间通信的样例.这一回咱们接着上一回的内容继续说使用消息队列进行进程间通信.闲话休提.言归正转.让我们一起talk C栗子吧! 我们在上一回中介 ...

  5. 1.2 Use Cases中 Commit Log官网剖析(博主推荐)

    不多说,直接上干货! 一切来源于官网 http://kafka.apache.org/documentation/ Commit Log 提交日志 Kafka can serve as a kind ...

  6. 微信消息体加解密及EncodingAESKey

    公众平台消息体签名及加解密方案概述 1.新增消息体签名验证,用于公众平台和公众账号验证消息体的正确性 2.针对推送给微信公众账号的普通消息和事件消息,以及推送给设备公众账号的设备消息进行加密 3.公众 ...

  7. python3中让程序暂停运行的语句

    https://blog.csdn.net/zmz971751504/article/details/78288988

  8. usr/bin/mysqladmin: refresh failed; error: &#39;Unknown error&#39;

    debian wheezy 升级后, 由于授权错误, 导致password给改动, 在debian的mysql safe下也无法进入.   我在/etc/mysql/my.cnf 里面已经改动了bin ...

  9. 【转】CentOS/RHEL/OracleLinux使用UDEV配置ASMDISK

    转自:http://blog.csdn.net/staricqxyz/article/details/8332566 RHEL 5 / CentOS 5 / Oracle Linux 5 [root@ ...

  10. 开发板 视频04_05 ubuntu的联网及基本设置

    4g内存 如果电脑有两g,只能给1.5g 处理器可以根据实际选 usb3.0 或者 2.0 联网模式:: 桥接模式 启动式连接,,,,网是不固定的 仅主机模式,主机和虚拟机在一个网络 第三种联网,自定 ...