IP表示為整數

2021-09-01 19:34:40 字數 2015 閱讀 6920

int ip = ;

/* // 測試**

system.out.println(integer.tobinarystring(ip[0]));

system.out.println(integer.tobinarystring(ip[1]));

system.out.println(integer.tobinarystring(ip[2]));

system.out.println(integer.tobinarystring(ip[3]));

system.out.println(" & 0xff: "); // 不夠八位的補齊八位

system.out.println(integer.tobinarystring(ip[0] & 0xff));

system.out.println(integer.tobinarystring(ip[1] & 0xff));

system.out.println(integer.tobinarystring(ip[2] & 0xff));

system.out.println(integer.tobinarystring(ip[3] & 0xff));

system.out.println("bit compute:"); // 不同部分位移8的倍數

system.out.println(integer.tobinarystring((ip[0] & 0xff) << 24 ));

system.out.println(integer.tobinarystring((ip[1] & 0xff) << 16 ));

system.out.println(integer.tobinarystring((ip[2] & 0xff) << 8 ));

system.out.println(integer.tobinarystring((ip[3] & 0xff) << 0 ));

*/// 通過位或操作把位移之後的數加起來,得到的結果就是能夠表示ip的整數

int v = ((ip[0] & 0xff) << 24 ) | ((ip[1] & 0xff) << 16 )

| ((ip[2] & 0xff) << 8 ) | ((ip[3] & 0xff) << 0 );

system.out.println(integer.tobinarystring(v));

system.out.println(v);

/* // 測試反向位移操作

system.out.println("reverse ip test ");

system.out.println(integer.tobinarystring(0xff));

system.out.println(integer.tobinarystring(v>>24));

system.out.println(integer.tobinarystring(v>>24 & 0xff));

system.out.println(integer.tobinarystring(v>>16));

system.out.println(integer.tobinarystring(v>>16 & 0xff));

system.out.println(integer.tobinarystring(v>>8));

system.out.println(integer.tobinarystring(v>>8 & 0xff));

system.out.println(integer.tobinarystring(v));

system.out.println(integer.tobinarystring(v & 0xff));

*/// 整數轉化為ip資料

system.out.println("reverse ip: ");

ip[0] = v>>24 & 0xff;

ip[1] = v>>16 & 0xff;

ip[2] = v>>8 & 0xff;

ip[3] = v & 0xff;

for(int i: ip)

整數的表示

計算機中整數用補碼表示 對於乙個整數 x 的01序列 x x x 3x 2x 1x 0 其 x 的值為 2 x sum limits 2 i x i 例如x的二進位制序列為1001011,x 2 6 2 3 2 1 2 0 53 也就是最高位是負的,其餘都是正的。c語言中位拓展有兩種方法,一種是零拓...

演算法 將正整數表示為平方數之和

timus online judge 上有這麼一道題目 1073.square country 這道題目的輸入是乙個不大於 60,000 的正整數,要求計算出該正整數最少能夠使用多少個正整數的平方和來表示。這道題目的時間限制是 1 秒 定理 369 lagrange 定理 每個正整數都是四個平方數之...

羅馬數表示整數

羅馬數字共有七個,即 i 1 v 5 x 10 l 50 c 100 d 500 m 1000 按照下面三條規則可以表示任意正整數。重複數次 乙個羅馬數字重複幾次,就表示這個數的幾倍。右加左減 在乙個較大的羅馬數字的右邊記上乙個較小的羅馬數字,表示大數字加小數字。在乙個較大的數字的左邊記上乙個較小的...