数据的储存、表示形式和基本运算

一、C++的数据类型
在这里插入图片描述
注:
1、上述根据Visual C++数值型和字符类型数据;
2、C++没有规定每一种数据所占的字节数,只规定了int型数据所占的字节数不大于long型,不小于short型。

二、修饰符signed和unsigned的区别
signed类型的整数,只用了去除最高位,剩下的15位来进行编码的,而最高位只是用来做标记(sign),标记整数的正负,0表示正,1表示负。所以对于signed的整数,的存储范围是(-2^15 to 2^15-1),也就是 -32768 到 +32767的整数。
unsigned的整数,其16位全部用来编码,存储范围便是(0 to 2^16-1),即 0到 65535 的非负整数。
eg:
可以声明 int a = 1,或者 int a = -1, 但是不可以声明 unsigned a = -1 。但是需要提到的一点是,不管整数的类型是signed 还是 unsigned,都用了16位来存储,也就是说16位全部用来存储数据 。
三、原码、反码、补码:
原码:就是十进制数据转化成对应的8位二进制的一个数,如果为负数,则最高位为符号位(1),否则为(0);原码的整数和小数中“0”的表示形式各 有2种,“+0”和“-0”不一样,以8位机器数为例,整数的“+0”原码为0,0000000;整数的“-0”原码为1,0000000;小数的“+0”原码为0.0000000,小数的“-0”原码为1.0000000
eg:
+11的原码为00001011,-11的原码就是10001011
注:原码不能直接参加运算,可能会出错。
eg:
数学上,1+(-1)=0,而在二进制中
原码00000001+10000001=10000010,换算成十进制为-2,就错了。
反码:是用来由原码求补码或者由补码求原码的过渡码。反码跟原码是正数时,一样;负数时,反码就是原码符号位除外,其他位按位取反。
eg:
“+0”和“-0”不一样,以8位机器数为例:
整数的“+0”原码为0,0000000,反码为0,0000000;
整数的“-0”原码为1,0000000,反码为1,1111111;
小数的“+0”原码为0.0000000,反码为0.0000000;
小数的“-0”原码为1.0000000,小数的“-0”反码为1.1111111。
补码:补码是计算机把减法运算转化为加法运算的关键编码,计算机运用补码进行加减乘除运算。
正数的补码与其原码相同;负数的补码是在其反码的末位加1:
eg:
已知原码,求补码。已知某数X的原码为10110100B,试求X的补码和反码。
解:由[X]原=10110100B知,X为负数。求其反码时,符号位不变,数值部分按位求反;求其补码时,再在其反码的末位加1。
1 0 1 1 0 1 0 0 原码
1 1 0 0 1 0 1 1 反码,符号位不变,数值位取反
1 +1
1 1 0 0 1 1 00 补码
故:[X]补=11001100B,[X]反=11001101B。
四、数值常量:
1、如果函数的形参为long int,则要求实参也必须为long int型(123L表示长整型)。
2、常熟的开头加一个数字0,就表示为八进制数形式(020表示八进制的20,即(20)8,相当于十进制的16);
开头加一个数字0和一个英文X(或x),就表示十六进制数(0X20表示(20)16,相当于十进制的32)。
五、字符常量:
1、普通字符常量,用单撇号括起来的一个字符就是字符常量,如‘a’,为一个字节。
2、转义字符常量:
在这里插入图片描述
3、字符串常量,用双撇括起来的字符:如“abc”,“hello!”,所占字节大小根据字符串大小决定,编译系统会在字符常量串最后自动加一个‘\0’作为字符串的标志。
eg:“abc”3个字符:a,b,c。4个字节,还有‘\0’
“abc\n”5个字符:a,b,c,\,n。6个字节
六、定义变量
先定义,后使用!!
1、保证程序中变量名使用得正确;
2、定义为一个确定的类型,编译时就能为其分配相应的储存单元;
3、编译时便于检查该变量是否进行的运算是否合法。
七、变量赋值(初始化)
初始化不是在编译过程中完成的,是在运行时执行函数时赋予初值的。一个数可以多次赋值,但只能定义一次。
八、符号变量和常变量的区别:
符号变量:用符号来代替一个字符串,编译时进行替换,无类型,内存中不存在以符号变量命名的储存单元。
eg:
#define PRICE 30 //不是语句,末尾不加分号,在编译时,将函数内所有的PRICE替换成30
常变量:具有变量特征,可以运用sizeof()测出其长度,有类型,内存中存在以他命名的储存单元。
eg:
const int a = 30; //用const来声明a的值不能改变,始终为30.
相同点:其值都不会被改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值