1.原码 反码 补码

只用补码进行计算,且没有减法。只有用补码进行加法运算,具体原因,详见:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html

因为为了让计算机的电路基础设计简单,只有加法,选择使用符号位,再因为通过原码进行正树和负数进行运算,显然不能实现,所以,增加反码,补码。一切都是为了设计更加简单。

利用反码进行减法,只能部分计算没问题。对于+0,和-0分别是0000 0000,1000 000,于是补码的出现解决了0的符号问题。这样用 0000 0000表示0,就不会存在-0的问题。而且可以用1000 000 表示-128。

利用补码,不仅仅修复了0的符号以及两个编码的问题,还能够多表示一个最低数,这就是为什么8位二进制使用原码或反码的表示范围为【-127,+127】,而使用补码则是【-128,127】。

因为机器使用补码,所以对于编程中常用到的32位int类型,可以表示的范围是:【-2^31,2^31-1】因为第一位表示的是符号位。而使用补码表示时又可以多保存一个最小值。

2.位运算 换算

  ①位 b 也叫比特位,是计算机数据最小的单位,用二进制0和1来存储。

  ②字节 byte,1 byte = 8 b,一个字节=8位

  ③字符 char,1 char = 2byte=16b,1个字符 =2 个字节 = 16位

  ④KB,1KB = 1024byte

  ⑤汉字,1个汉字 = 2 个字节=16位。

3.位运算 逻辑运算

 按位与 &

    1&1=1

    1&0=0

    0&0=0

 按位或 |

    1|1=1

    1|0=1

    0|0=0

  按位异或 ^ ,按照每一位进行异或,相同为0,不同为1

    

  按位取反 ~

    ~1=0

    ~0=1

 应用:

    判断数的奇偶性:与1&,若结果为1,则为奇数,反之为偶数。

    密码加密:两次异或同一个数之后结果不变,这个也可以用来在不会有溢出的风险下交换两个数的值。

  

  

最新文章

  1. C程序设计语言学习笔记
  2. sublime3 插件
  3. Tomcat 目录详解
  4. golang——channel笔记
  5. junit批量测试
  6. gearman mysql udf
  7. SNF开发平台WinForm之三-开发-单表选择控件创建-SNF快速开发平台3.3-Spring.Net.Framework
  8. 完整学习git四git对象
  9. JSP文件下载及出现getOutputStream() has already been called for this response的解决方法
  10. 极客编程必备的五大PHP开发应用
  11. 文件尾存在EOF吗?
  12. mysql error笔记1
  13. Memcache存储机制与指令汇总
  14. 玩转Spring MVC (一)---控制反转(依赖注入)
  15. Wireshark基本用法 && 过滤规则 && 协议详解
  16. 如何利用jQuery post传递含特殊字符的数据【转】
  17. westrac server security configure user info
  18. 消除ADB错误“more than one device and emulator”的方法(转)
  19. Error: could not find java.dll如何解决
  20. 【C#】在datatable中添加一序号列,编号从1依次递增,并且在第一列

热门文章

  1. React: React组件创建的三种方式
  2. 掌握Spring REST TypeScript生成器
  3. 2019 年 GitHub 上最热门的 Java 开源项目
  4. URLDecoder异常Illegal hex characters in escape (%)
  5. 一次业务网关用ASP.NET Core 2.1重构的小结
  6. 如何在Mac上配置iTerm2以及给ITerm2配置lrzsz
  7. 通过对象方法获取委托_C#反射获取委托_
  8. .net 定时任务调度
  9. linux权限管理-特殊权限
  10. 微信小程序如何使用 Git 实现版本管理和协作开发