- 浏览: 25055 次
- 来自: 北京
最新评论
文章列表
原文链接:http://www.ruanyifeng.com/blog/2009/08/twos_complement.html
问一个基本的问题。
负数在计算机中如何表示?
举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢?
很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。比如,在8位机中,规定每个字节的最高位为符号位。那么,+8就是00001000,而-8则是10001000。
但是,随便找一本《计算机原理》,都会告诉你,实际上,计算机内部采用2的补码(Two's Complement)表示负数。
什么是2的补码?
它是 ...
用java实现如下:
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
方法一:private static void pyramid(int line) {
for(int i=1; i<=line; i++) {
for(int j=1; j<=line-i; j++) {
System.out.print(" ");
...
StringBuffer s = null;
System.out.println(s.append(""));
会报运行时空指针异常。
记录一下,提醒自己这样的菜鸟:StringBuffer s = new StringBuffer();这行代码是生成了一个StringBuffer的引用s,指向一个内容为空的StringBuffer, StringBuffer s = null;这行则是生成了一个StringBuffer的引用s,内容为null,亦即未指向任何对象,此时调用append("")自然会报空指针异常了。StringBuffer s = ...
Java中的17种常用正则表达式
- 博客分类:
- Java
01、"^d+$" //非负整数(正整数 + 0)
02、"^[0-9]*[1-9][0-9]*$" //正整数
03、"^((-d+)|(0+))$" //非正整数(负整数 + 0)
04、"^-[0-9]*[1-9][0-9]*$" //负整数
05、"^-?d+$" //整数
06、"^d+(.d+)?$" //非负浮点数(正浮点数 + 0)
07、"^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]* ...
Java求连续和为某数的数字序列
- 博客分类:
- Java
public class ContinuousSum {
public static void main(String[] args) {
int result = 15;
for(int begin=1; begin<=result/2; begin++) {
for(int end=begin+1; end<=result/2+1; end++) {
int sum = 0;
for(int k=begin; k<=end; k++) {
sum += k;
}
if(sum == result) ...
import java.util.*;
public class FindOdd {
public static void main(String[] args) {
int [] arr = {1, 4, 7, 3, 1, 3, 7, 4, 6, 9, 6};
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for(int i=0; i<arr.length; i++) {
if(map.containsKey(arr[i])) {
map.re ...
public class CountWords {
public static void main(String[] args) {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader("english.txt"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
StringBuffer sb = new StringBuffer();
String li ...
public class StringTest {
public static void main(String[] args) {
String str = new String("abc"); //语句(1)
String str1 = "abc";//语句(2)
String str2 = new String("abc");//语句(3)
System.out.printl ...
class Parent{
int x=10;
public Parent(){
add(2);
}
void add(int y){
x+=y;
}
}
class Child extends Parent{
int x=9;
void add(int y){
...
1 如何将字串 String 转换成整数 int?
A. 有两个方法:
1). int i = Integer.parseInt([String]);
或
i = Integer.parseInt([String],[int radix]);
2). int i = Integer.valueOf(my_str).intValue();
注: 字串转成 Double, Float, Long 的方法大同小异.
2 如何将整数 int 转换成字串 String ?
A. 有三种方法:
1.) String s = String. ...
1 死锁的基本概念
1.1 死锁
指多个进程在运行过程中因争夺资源而造成的一种僵局(deadly-Embrace),若无外力作用,这些进程都将无法向前推进。
1.2 产生死锁的原因
原因两点如下:
1. 竞争资源。
2. 进程间推进顺序非法。
其 ...
一 自增与自减运算符遵循以下规律:
1. 可以用于整数类型byte、short、int、long,浮点类型float、double,以及字符串类型char。
2. 在Java5.0及以上版本中,它们可以用于基本类型对应的包装器类Byte、Short、Integer、Long、Float、Double、Character。
3. 它们的运算结果的类型与被运算的变量的类型相同。
二 按位运算符能操作整型值,包括byte、short、int、long,但是不能操作浮点型值(即float和double),它还可以操作字符型(char)值。按位运算符不能够操作对象,但是在Java5.0及以上版本中 ...
//转换成字符数组逆序输出
public static void stringReverse(String s) {
char[] charArr = s.toCharArray();
String resultStr = "";
for(int i=s.length()-1; i>=0; i--) {
resultStr += charArr[i];
}
System.out.println(resultStr);
}
//转换成字符数组从两头开始交换
public static void string ...
Java中继承情况下类的初始化顺序
- 博客分类:
- Java
父类--静态变量
父类--静态初始化块
子类--静态变量
子类--静态初始化块
父类--变量
父类--初始化块
父类--构造器
子类--变量
子类--初始化块
子类--构造器
其中,静态变量和静态初始化块、变量和初始化块之间顺序,取决于他们在类中出现的先后顺序。
一 final
final可以用来修饰:
1. 变量
若修饰基本类型,则表示常量
若修饰引用类型,则表示此变量被赋予的引用是不可变的,但其指向的对象是可变的
若修饰方法的形参,则此形参在方法体内部不可以被赋值
还有一种更贴切的说法,若一个变量或方法参数被final修饰,就表示它只能被赋值一次,但是Java虚拟机为变量设定默认值不记做一次赋值。
被final修饰的变量必须被初始化,有以下几种方式:
...