复习一个小知识点(反码与按位取反)

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

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

时间: 2024-11-25 11:00:01

复习一个小知识点(反码与按位取反)的相关文章

复习正则表达式时的一个小知识点

复习正则表达式时的一个小知识点     当分组后,若要引用此小组内容可以有两种方式 1:用 ${1} 2:用 \1 两者效果是一样的

js中关于value的一个小知识点(value既是属性也是变量)

今天在学习input的value值时,发现这么一个小知识点,以前理解不太透彻. [1]以下这种情况,是常见的情况,会弹出“测试内容” <input type="button" value="测试内容" onclick = "alert(value)"> [2]心想,这种情况下value找不到,作用域链应该到document了,应该弹出“123",但情况是弹出空 <script> var value=123; &l

post提交与get提交的一个小知识点

今天偶然发现post提交与get提交的一个小知识点,记下来以后可以看看. 将form表单的method的设置为get后,通过url传递的参数将不会被传递到服务器,例如1.ashx?a=123,的a=123在后台就读不出来: 但是如果将method设置为post后,在后台仍然可以读到a=123. post提交与get提交的一个小知识点

基本数据类型的一个小知识点

此程序会在第4行编译出错. 没有final修饰的变量相加后会被自动提升为int型,与目标类型byte不相容,需要强制转换(向下转型). 因此选择c 表达式的数据类型自动提升, 关于类型的自动提升,注意下面的规则. ①所有的byte,short,char型的值将被提升为int型: ②如果有一个操作数是long型,计算结果是long型: ③如果有一个操作数是float型,计算结果是float型: ④如果有一个操作数是double型,计算结果是double型: 

关于 python 类与继承中方法调用 的 一个小知识点记录

(1)D类,多继承于C类与B类,C类与B类继承于A类.C类中没用__init__(), C类的实例化会先寻找第一个继承类是否存在__init__(),也就是B类的__init__().因为python3中使用的是广度优先的方法,寻找路径为D-->B-->C-->A 关于其他方法的继承,也是这个顺序. class A(object): def __init__(self): print("i am A") def call(self): print("A CA

CSS伪类选择器的一个小知识点

li:first-child {color:red} li:nth-child(3n) {color: red} 在对nth-child传参的时候,已经直接用公式,3n就表示3的倍数.多用伪类和伪元素,可以使代码更精简,多看一下. display:table-cell实现垂直居中挺好用的,看别人的文章

浏览器的一个小知识点

先看两张图片: 如图,图一是浏览器中的显示本地文件夹的方式,图二是webstorm文件夹的显示方式. 会发现:浏览器文件夹中没有加载出来图片,而又不是404错误. 说明你的导入图片是用js(jQuery)中的css方法导入的图片,而路径不会出错,错了也就简单的解析为了字符串了,所以不出现404错误. 解决方法:检查路径

有关autoresizingMask属性遇到的一个小问题

前言:在讲述这个小问题之前,我们有必要先了解一下UIViewAutoresizing的有关属性概念和使用详解. 参考:自动布局之autoresizingMask使用详解(Storyboard&Code)     现在已经不像以前那样只有一个尺寸,现在最少的iPhone开 发需要最少需要适配三个尺寸.因此以前我们可以使用硬坐标去设定各个控件的位置,但是现在的话已经不可以了,我们需要去做适配,也许你说可以使用两套UI 或两套以上的UI,但那样不高效也不符合设计.iOS有两大自动布局利器:autore

一个关于echo的小知识点

一个关于echo的小知识点     echo一个布尔值时,如果是true,输出1,而如果是false,将什么都不输出! 网上搜的一个解释: 对于数字类型来说,false 确实 是 0, 而对string来说,false是 空,虽然数字的0也等于字符串的空,但是不能说 bool 转换 string 以后就是 0: var_dump((int)false);var_dump((string)false);