zoukankan      html  css  js  c++  java
  • 复习一个小知识点(反码与按位取反)

    第一点是:反码与按位取反~

    在Java中~符号是按位取反,例如,~5=-6。-5=4.  快速计算:一般~可以直接用(a+1)算,正数负数均可

    思路:

    是按位取反运算,与反码是不同的,
    反码法规定,正数原反补码相同,负数的反码为原码除符号位以外取反。
    而按位取反运算中:正数取反是先将初始数值转换成二进制数(6==》00000110),再对二进制数的每一位取反:即将0变为1、将1变为0。(00000110==》11111001),得到的是最终结果的补码,要转换为最终结果的原码则需再次取补码,(此处一种逆着算为11111001-1除符号位全取反10000111即为-7,另一种为11111001==》10000110+1==》10000111也为-7)就能得到计算结果。
    负数取反:先将初始数值转换成二进制数(以-6为例,10000110),再取得二进制数的补码(10000110==》11111001+1==》11111010),之后对补码的每一位取反:即将0变为1、将1变为0(11111010==》00000101即为5)。得到的是最终结果的补码(由于正数的原码、反码、补码相同,该数即为原码),要转换为最终结果的原码则需再次取补码,就能得到计算结果。

    注:在计算机中,运算都是通过补码进行计算的,这个点也是今晚我一直想不到的点,以至混淆了概念,胡乱取反。

    第二个点是:IO流方面

    IO流分为字节流(0-255)和字符流(0-65535)。

    字节流:InputStream与OutputStream,这两个类都是抽象类,不能直接new,可以通过子类来new,FileInputStream、FileOutputStream.

    字符流:Reader与Writer   子类InputStreamReader、OutputStreamWriter

    转换流,字节流可以转换成字符流,JDK提供了两个人将字节流转换为字符流,分别是:InputStreamReader、OutputStreamWriter.

    socket传输信息都是以二进制形式传输,也就是字节流进行处理。当传输到客户端或者服务端,如果数据比较大,就不能使用字节流来存储,需要包装一下字节流,将字节流装换成字符流,在字符流中还可以将信息放到缓存区,也就是BufferReader与BufferWriter中。

    注意一点:FileWriter创建来一个输出流对象out,out.write(s)是把字符串s输进了流里,并没有输出到文件中,你必须调用out.flush()方法讲流中数据冲进目标文件,注意,io流用完后要记得用close()方法关闭,否则将有意想不到的麻烦,另外close()方法也具有flush()的作用。

    第三个点是很多报文里头需要占据不止8位(一个字节)的空间,需要用位才做来存放,

    int result = b1<<8+b2;//这个方法可以得到b1与b2共16位返回的值。

  • 相关阅读:
    H5项目开发分享——用Canvas合成文字
    《JavaScript设计模式 张》整理
    Linux常用指令指南,终端装逼利器
    飞起来的正则表达式
    JavaScript特性(attribute)、属性(property)和样式(style)
    使用 Nginx 提升网站访问速度
    centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 使用邮箱系统 第三十一节课
    用nginx的反向代理机制解决前端跨域问题在nginx上部署web静态页面
    mysql字符集调整总结
    因为smb和nfs挂掉导致客户端开机启动不了
  • 原文地址:https://www.cnblogs.com/shigeng/p/8087981.html
Copyright © 2011-2022 走看看