计算机基础知识记录(1)

发布时间 2023-10-19 19:53:43作者: 刑大善

十进制转换二进制:(要注意正数和小数的区别)

正数:数字除以2然后继续将商除以2,将余数按照逆序排列即可得到二进制数;

例如:28转换为2进制数,28÷2=14,余0;14÷2=7,余0;7÷2=3,余1;3÷2=1,余1;1÷2=0,余1。

    最后,逆序排列余数即可得到28的二进制表示,即 11100。

小数部分:乘以2取正数部分,再按顺序书写;

例如:0.625*2=1.25
  0.25 *2=0.5
  0.5 *2=1.0
然后我们将整数部分按从上往下的顺序书写就是:101,那么这个101就是十进制0.625的二进制形式

所以:十进制数(28.625)的二进制就 =(11100.101)。


将两个数a、b的数值交换的方法:

设int a = 7,b = 4;

1.引入第三方变量:(常用)优点:最简单最好理解的方式

int c;  c=a;//c=7.  a=b;//a=4.  b=c;//b=7.

System.out.println("a=" + a + ", b=" + b);

 

2. 数值相加减交换:缺点:如果 a 和 b的数值过大的话,超出 int 的值会损失精度。

a = a + b;//a=7+4=11.  b = a - b;//b=11-4=7.  a = a - b;//a=11-7=4.

System.out.println("a=" + a ", b=" + b);

3.位移运算交换:一个数异或同一个数两次,结果还是那个数,而且不会超出int范围(最佳实现)。

首先了解异或运算的方法:先将数转变为二进制数。

1^1=0;  0^0=0;  1^0=1;  0^1=1;  也就相当于两者相等为0,不等为1。

x = x ^ y;//7=111^4=100异或结果即为011=3。

y = x ^ y;//3=011^4=100异或结果即为111=7。

x = x ^ y;//3=011^7=111异或结果即为100=4。

需要注意,传入的两个值不能一样,如果一样的话就或导致交换后的两个结果都变为0,这个在排序中经常容易出现问题,需小心使用;