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位返回的值。

  • 相关阅读:
    关于Form窗体的StartPosition 属性如何设置的问题
    Oracle的JDBC Url的几种方式
    spring boot不同环境读取不同配置
    spring的启动过程就是创建ioc容器的过程
    spring容器启动过程理解
    spring mvc流程理解
    @responsebody注解的作用就是让viewresolver不起作用,不返回视图名称而是直接返回的return object
    @Controller和@RestController的区别?
    项目包名和分层都是按照代码来分的,不是按照业务。包名是:组织名称+代码分层
    WebMvcConfigurer
  • 原文地址:https://www.cnblogs.com/shigeng/p/8087981.html
Copyright © 2011-2022 走看看