计算机酷学(四)

数字(二)

C中的移位运算

      首先移位有两种,第一种是左移位,第二种是右移位。移位运算主要体现在二进制情况下。
左移位(<<)
      假设一个数x,x<<k生成一个值,这个值是x丢弃最高k位,最低k位补0后得到的
右移位(>>)
      右移位分为逻辑右移算术右移,逻辑右移是在左端补k个0,而算术右移则是在左端补k个最高有效位的值。一般有符号数都执行算术右移,无符号数进行逻辑右移,而在Java中>>是算术右移,>>>是逻辑右移。
k过大怎么办?
      在计算机中,移位指令只考虑位移量的低log2ω位,也就是说实际位移量为k mod ω。

数的表示

无符号数的编码

      假设一个无符号的二进制表示为[xω-1, xω-2, …, x0],那么该无符号数十进制表示为
and

补码编码

      补码主要用来表示有符号数,它将字的最高有效位解释为负权,即有符号数十进制表示为
and

反码

      除了最高有效位的权是-(2ω-1-1),另外和补码是一样的,即
and
[00…0]解释为+0,-0则表示为[11…1]

原码

      最高有效位是符号位,用来确定剩下的位应该取负权还是正权。即
and
[00…0]解释为+0,-0表示为[10…0]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值