第四章:字节和位运算

字节和位运算

数据是如何存储的?

大家都知道在计算机中都是按照二进制存储的,所以大家常说计算机是由0和1组成的。二生万物!我们可以将计算机的存储器想想成下面这样的一个一个的小格子,每个小格子可以存储1位二进制数。

例如十进制数字145在二进制存储下应为10010001,它在计算机中存储如下所示:

img

每一个小格子只能有两种状态,要么为0要么为1。这种可以存储1位二进制数的小格子就是计算机中的最小单位,称为一个比特(bit)。 8个比特可以组成一个更大的单位称为字节(Byte) 即∶1字节=8bit

其他计量单位:

1KB=1024Byte   1MB=1024KB   1GB=1024MB   1TB=1024GB   1PB=1024TB

Copy

不同的数据类型的空间占用:

不同的数据类型在存储器中存储时占用的空间是不同的。下面分别是几种常见的数据类型所占用的空间,数据类型对存储空间的占用是按照字节来计算的,也就是说任何数据类型最少也会占用一个字节的存储空间:

img

通过上面的表格,我们已经很清楚的了解了每种数据类型所占用的空间了,那么大家能通过每个数据类型占用的空间推算出每种数据类型能够表示的数据范围吗?比如说,对于int类型,它可表示的数据范围是多少?

通过上面,我们发现int类型占用了4个字节,每个字节等于8个比特,因此int类型一共占用4*8=32个字节,每个字节相当于一个小格子,因此int类型最多占用32个小格子,当小格子里面的数字全部为1的时候,即int类型可表示的最大数字。

img

你是不是觉得这样就对了,其实并不是,因为int还可以存储负数,计算机用32bit中最左边的1位来标识正负数,0为正,1为负。故int类型最大表示范围如下:

img

因此,int类型的数据范围为:-231 ~231-1 231=2147483648≈2.147*109 因此在我们编程过程中,如果处理的数超过109,就要小心是否会超过int的范围,因为可能会出现数据溢出!

img

unsigned int无符号整型,无符号在这里的含义是不存在负数,也就是说unsiged类型的变量无法存储负数。

263= 9223372036854775808 ≈9.22*1018 如果整数超过这个范围就需要使用高精度算法了。

例题1:以下变量的定义、运算和赋值是否正确。

int a = 100000;                    正确 
int b = 2000000000;                正确
int c = 3000000000;                错误∶ 超出int范围 
int d = a * a;                     错误∶ a*a超出int范围 
int e = 1000000000;                正确 
int f = b + e;                     错误∶ b+e超出了int范围
long long g = 123456789987654321;  正确 
long long h = g * 10;              错误

Copy

什么是位运算?

程序中所有数在计算机中都是以二进制的形式存储的。位运算就是直接对整数在内存中的二进制位进行操作。在C++中位运算一般包含6种,分别是按位与 & ,按位或 | ,按位异或 ^ &

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

10247D

我会继续努力,信息技术会越好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值