java 二进制 权限_二进制编码 · java development · 看云

* 对于计算机, 加减乘数已经是最基础的运算, 要设计的尽量简单. 计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 1-1 = 1 + (-1) = 0

* 计算机存储的就是补码,使用补码进行运算免去了符号位带来的麻烦

* 在计算机内,定点数有3种表示法:**原码、反码和补码**

* 原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

* 正数的原码与补码相同,负数补码为其绝对值各位取反加1

* 负数的补码是其绝对值取反

**+21,其二进制表示形式是00010101,则其补码同样为00010101**

**-21的表示方式**

1. 按照概念其**绝对值为00010101**,各位**取反为11101010**,**再加1**为11101011,即-21的二进制表示形式为11101011

**1. byte为一字节8位,最高位是符号位,即最大值是01111111,因正数的补码是其本身,即此正数为01111111**

2. 10000000是最小负数的补码表示形式,我们把补码计算步骤倒过来就即可。10000000减1得01111111然后取反10000000

因为负数的补码是其绝对值取反,即10000000为最小负数的绝对值,而10000000的十进制表示是128,所以最小负数是-128

## 八进制

以0开头

## 十六进制

以0x开头,1-F,一个数字代表四位

f代表15,二进制表示00001111

## 练习题

![](https://img.kancloud.cn/3e/c7/3ec784b0c768cc008d72fbb2bf07fbea_672x234.png)

```

0Xf000000000000000补码为1111000000000000000000000000000000000000000000000000000000000000

0x7FFFFFFFFFFFFFFF补码为0111111111111111111111111111111111111111111111111111111111111111

a-b=a+(-b)=

1111000000000000000000000000000000000000000000000000000000000000+

1000000000000000000000000000000000000000000000000000000000000001=

10111000000000000000000000000000000000000000000000000000000000001(高位溢出舍去)

则结果为

0111000000000000000000000000000000000000000000000000000000000001=

2^62+2^61+2^60+1

```

答案为C

## 1-2 的二进制运算

1的原反补码都相同,都是

0000 0001

-2 的原码是

1000 0010

补码是符号位不变,取反

1111 1101

加1

1111 1110

```

0000 0001

+

1111 1110

=

1111 1111

```

结果是负数,减一取反,得到原码

1000 0001 即为-1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值