zoukankan      html  css  js  c++  java
  • 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(8)枚举、补码

    一、枚举

    # include <stdio.h>
    
    enum WeekDay  //定义了一个数据类型(值只能写以下值)
    {
    	MonDay, TuesDay, WednesDay, ThursDay, FirDay, SaturDay, SunDay
    };
    int main(void){
    	enum WeekDay day = WednesDay;
    	printf("%d
    ", 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
    ", 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
    ", 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
    ", cha);
    
    	char ch = 0x80;  //1000 0000   -128
    	printf("%d
    ", ch);
    	
    	char c = 128;   // 1000 0000   -128
    	printf("%d
    ", c); 
    	
    	return 0;
    }
    //输出结果:
    //127
    //-128
    //-128





  • 相关阅读:
    关于如何触发控件的事件
    MaxScript转换图像格式
    MaxScript装B技巧一则
    MaxScript.Net接收本地端口的消息执行
    MaxScript创建十二面体的代码
    MaxScript中GW使用范例一则
    Max里,Mesh真是高级自由度啊
    显示当前秒数的MaxScript
    Max2010的activex以及.net界面乱码解决方式
    半夜失眠,码点关于技术美术的字
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469055.html
Copyright © 2011-2022 走看看