CS学习(三)——信息的位与表示

为什么选择二级制?

(1)计算机是由仅具有“开”“关”两个状态的逻辑电路组成的。

(2)二进制计算模式比较简单

(3)二进制电路具有较强的抗干扰性

(4)二进制便于布尔代数的计算(!,&&,||)

二进制(B)和十六进制(H)转换:

来源:湖大CS课程组(侵删)

简单说来,就是每一位上的数字单独转换就ok了。

位向量的运算

运算符:&:与    |:或    ^:异或    ~:非

理解:每一位单独进行运算:

来源:湖大CS课程组(侵删)

C语言中的位运算操作符适用于所有“整形”数据:

以char型为例:

来源:湖大CS课程组(侵删)

(注意转换为二进制再做位运算,举个例子:~0x41 - 0100 0001做非运算)

逻辑运算

(注意与位运算的区分)

运算符:!&& ||

(返回值非1即0,就是说不用管多大,只要不是0就当作1来看)

举例:

来源:湖大CS课程组(侵删)

移位运算 — "<<"左移   ">>"右移

逻辑左移:左侧多余位舍弃。

逻辑右移:左侧用0补齐。

eg.

算术左移:最高位保持不变,低位依次左移。

算术右移:左侧用最高位补齐。

eg.

逻辑位移适用于无符号数,算术位移适用于有符号数(最高位是符号位)。

简单说来

左移x位是乘2^x(若无溢出),右移是除以2^x(但会有误差)

关于为什么算术右移是补符号位的问题:

以十进制的-18为例,其补码为1110 1110,算术右移1位为1111 0111(数据以补码形式保存在机器中),转为原码是1000 1001为-9,刚好是除以2。

所以,补上符号位实现了除以2的操作。


内存组织

一个内存地址存放的是一个字节(8bit)

因此连续存放的两个字之间相隔4(32位)/8(64位)个地址。

字节存放顺序

来源:湖大CS课程组(侵删)

字符串表示

对于字符串,必须以空字符结尾。

对于char str[6]="12345"这一字符串,每一个字符都由ascii码表示。

(注:大端或小端存储不会影响字符串存储排列)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值