一些基础问题1

网速

家里的宽带声称是200M的,你以为是每秒可以传输200M数据?
其实是200Mbps(megabits per second,200兆/百万bit每秒)。注意这里是bit,需要/8转为字节byte,才是平时认知的兆字节。
即25MB/s的传输能力。

补码运算

二进制运算的演化过程:

这样,-1(1111)+1(0001)=0(10000)
溢出最高位,剩下的即为0
同理-8(1000)+7(0111)=-1(1111)
(-1)*(-1)=?


正数,三码合一
计算机底层都以补码的方式储存数据!

总结:

  1. 正数(如7)=负数(如-7)取反+1,负数(如-7)=正数(如7)取反+1

  2. 补码运算有溢出风险,运算结果只取范围之内的

  3. n位二进制补码最多能表示2的n次方个数,范围是-2(n-1)~2(n-1)-1
    PS: 32位操作系统的二进制补码能表示的数的范围:-2G~2G-1 (1G=1024的3次方)

  4. 计算机中,二进制转十进制:以0开头的直接转;以1开头的,先取反,再+1,再转十进制,最后加负号。

  5. 十进制转二进制,负数也是同理,先得到正数的,最后取反加1。

  6. 十进制手算转二进制:

十六进制

十六进制是二进制的简写,方便书写二进制数,每一位的取值是0~f。。
Binary、Octal、Decimal、Hex分别是2、8、10、16进制(写法分别是0b开头,0开头,直接写,0x放前面,或者H放后面)

         int a = 99;

	 System.out.println(a +"的二进制是: "+ Integer.toBinaryString(a));//99的二进制是: 1100011
	 System.out.println(a +"的十六进制是: "+ Integer.toHexString(a));//99的十六进制是: 63

  1. 二进制转换成十六进制的方法是,取四合一法。因为二进制的每四位可合为十六进制的一位。
  2. 十六进制转为二进制,反过来就是一分四,即十六进制数的每一位可分成二进制数的四位。
  3. Java 二进制与十六进制转换
posted @ 2019-03-30 15:29  Hermioneee  阅读(247)  评论(0编辑  收藏  举报