CODE
size(280,150);
background(250);
int num1 = 10; //ค่าตัวเลข1
int num2 = 2; //ค่าตัวเลข2
int [] n1 = new int [4]; //สร้าง Array ชื่อ n1 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่าเลขฐานสองของ num1
int i1 = 3; //ให้ตัวแปร i1 เท่ากับ 3 (ลำดับที่ 3 ใน Array)
int [] n2 = new int [4]; //สร้าง Array ชื่อ n2 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่าเลขฐานสองของ num2
int i2 = 3; //ให้ตัวแปร i2 เท่ากับ 3 (ลำดับที่ 3 ใน Array)
//แสดงตัวเลขที่นำมาลบ
fill(0);
textSize(20);
text(num1+" - "+num2+" = ",10,30);
//ค่าเลขฐานสอง ของ num1
while(i1>=0){ //ถ้าค่าตัวแปร i1 มากกว่าหรือเท่ากับ 0
n1[i1] = num1%2; //Array ชื่อ n1 ลำดับที่ i1 มีค่าเท่ากับ เศษเหลือของ num1 หาร 2
if(num1%2!=0){ //ถ้าเศษเหลือของ num1 หาร 2 ไม่เท่ากับ 0
num1 = num1-1; //ให้ num1 มีค่าลดลง 1
}
else if(num1==1){ //แต่ถ้า num1 เท่ากับ 1
num1 = 2; //ให้ num1 เท่ากับ 2
}
*สร้างเงื่อนไข if(num1%2!=0) และ else if(num1==1) เนื่องจากถ้าหาร 2 ไม่ลงตัวจะทำให้ num1/2 ในบรรทัดล่างติดค่าทศนิยม และเมื่อทำซ้ำต่อไปก็จะได้ค่าเศษเหลือเป็นเลขทศนิยม
num1 = num1/2; //ให้ num1 มีค่าเท่ากับ num1 หาร 2 เพื่อนำค่ามาทำซ้ำเพื่อหาเศษเหลือในลำดับต่อไป
i1 = i1 - 1; //ให้ i1 ลดลง 1 เพื่อเลื่อนลำดับใน Array
}
//ค่าเลขฐาน2 ของnum2
while(i2>=0){ //ถ้าค่าตัวแปร i2 มากกว่าหรือเท่ากับ 0
n2[i2] = num2%2; //Array ชื่อ n2 ลำดับที่ i2 มีค่าเท่ากับ เศษเหลือของ num2 หาร 2
if(num2%2!=0){ //ถ้าเศษเหลือของ num2 หาร 2 ไม่เท่ากับ 0
num2 = num2-1; //ให้ num2 มีค่าลดลง 1
}
else if(num2==1){ //แต่ถ้า num2 เท่ากับ 1
num2 = 2; //ให้ num2 เท่ากับ 2
}
*สร้างเงื่อนไข if(num2%2!=0) และ else if(num2==1) เนื่องจากถ้าหาร 2 ไม่ลงตัวจะทำให้ num2/2 ในบรรทัดล่างติดค่าทศนิยม และเมื่อทำซ้ำต่อไปก็จะได้ค่าเศษเหลือเป็นเลขทศนิยม
num2 = num2/2; //ให้ num2 มีค่าเท่ากับ num2 หาร 2 เพื่อนำค่ามาทำซ้ำเพื่อหาเศษเหลือในลำดับต่อไป
i2 = i2 - 1; //ให้ i2 ลดลง 1 เพื่อเลื่อนลำดับใน Array
}
//แสดงตัวเลขฐานสองที่นำมาลบ
fill(0);
textSize(20);
text(n1+" - "+n2+" = ",100,30);
//ตัวทด
int []c = new int [4]; //สร้าง Array ชื่อ c ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่าเลขฐานสองของ c (ตัวทด)
int ic = 0; //ให้ตัวแปร ic เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ic<c.length){ //ถ้าค่าตัวแปร ic น้อยกว่าความยาวของ Array ชื่อ c (ซึ่งเท่ากับ 4)
if((n1[ic]==0)&&(n2[ic]==0)){ //ถ้าค่าของตัวแปร n1,n2 ในลำดับที่ ic เท่ากับ 0
c[ic-1] = 0; //ให้ค่าตัวแปรใน Array ชื่อ c ในลำดับที่ ic - 1 เท่ากับ 0
}
else if((n1[ic]==1)&&(n2[ic]==0)){ //ถ้าค่าของตัวแปร n1 ในลำดับที่ ic เท่ากับ 1,n2 ในลำดับที่ ic เท่ากับ 0
c[ic-1] = 0; //ให้ค่าตัวแปรใน Array ชื่อ c ในลำดับที่ ic - 1 เท่ากับ 0
}
else if((n1[ic]==0)&&(n2[ic]==1)){ //ถ้าค่าของตัวแปร n1 ในลำดับที่ ic เท่ากับ 0,n2 ในลำดับที่ ic เท่ากับ 1
c[ic-1] = 1; //ให้ค่าตัวแปรใน Array ชื่อ c ในลำดับที่ ic - 1 เท่ากับ 1
}
else if((n1[ic]==1)&&(n2[ic]==1)){ //ถ้าค่าของตัวแปร n1,n2 ในลำดับที่ ic เท่ากับ 1
c[ic-1] = 0; //ให้ค่าตัวแปรใน Array ชื่อ c ในลำดับที่ ic - 1 เท่ากับ 0
}
ic = ic + 1; //เพิ่มค่า ic ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
*boolean เป็นชนิดของตัวแปรที่มี 2 ค่า คือ true และ false
//เปลี่ยนค่าเลขฐานสองของ num1 เป็น true,false
boolean []b1 = new boolean [4]; //สร้าง Array ชื่อ b1 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่า true,false ของ num1
int ib1 = 0; //ให้ตัวแปร ib1 เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ib1<b1.length){ //ถ้าค่าตัวแปร ib1 น้อยกว่าความยาวของ Array ชื่อ b1 (ซึ่งเท่ากับ 4)
if(n1[ib1]==0){ //ถ้าค่าของตัวแปร n1 ในลำดับที่ ib1 เท่ากับ 0
b1[ib1] = false; //ให้ใน Array ชื่อ b1 ในลำดับที่ ib1 เท่ากับ false
}
else if(n1[ib1]==1){ //ถ้าค่าของตัวแปร n1 ในลำดับที่ ib1 เท่ากับ 1
b1[ib1] = true; //ให้ใน Array ชื่อ b1 ในลำดับที่ ib1 เท่ากับ true
}
ib1 = ib1 + 1; //เพิ่มค่า ib1 ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//เปลี่ยนค่าเลขฐานสองของ num2 เป็น true,false
boolean []b2 = new boolean [4]; //สร้าง Array ชื่อ b2 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่า true,false ของ num2
int ib2 = 0; //ให้ตัวแปร ib2 เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ib2<b2.length){ //ถ้าค่าตัวแปร ib2 น้อยกว่าความยาวของ Array ชื่อ b2 (ซึ่งเท่ากับ 4)
if(n2[ib2]==0){ //ถ้าค่าของตัวแปร n2 ในลำดับที่ ib2 เท่ากับ 0
b2[ib2] = false; //ให้ใน Array ชื่อ b2 ในลำดับที่ ib2 เท่ากับ false
}
else if(n2[ib2]==1){ //ถ้าค่าของตัวแปร n2 ในลำดับที่ ib2 เท่ากับ 1
b2[ib2] = true; //ให้ใน Array ชื่อ b2 ในลำดับที่ ib2 เท่ากับ true
}
ib2 = ib2 + 1; //เพิ่มค่า ib2 ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//เปลี่ยนค่าเลขฐานสองของตัวทด เป็น true,false
boolean [] bc = new boolean [4]; //สร้าง Array ชื่อ bc ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่า true,false ของตัวทด
int ibc = 0; //ให้ตัวแปร ibc เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ibc<bc.length){ //ถ้าค่าตัวแปร ibc น้อยกว่าความยาวของ Array ชื่อ bc (ซึ่งเท่ากับ 4)
if(c[ibc]==0){ //ถ้าค่าของตัวแปร c ในลำดับที่ ibc เท่ากับ 0
bc[ibc] = false; //ให้ใน Array ชื่อ bc ในลำดับที่ ibc เท่ากับ false
}
else if(c[ibc]==1){ //ถ้าค่าของตัวแปร c ในลำดับที่ ibc เท่ากับ 1
bc[ibc] = true; //ให้ใน Array ชื่อ bc ในลำดับที่ ibc เท่ากับ true
}
ibc = ibc + 1; //เพิ่มค่า ibc ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//ผลลัพธ์ที่ยังไม่รวมตัวทดเป็น true,false
boolean [] r = new boolean [4]; //สร้าง Array ชื่อ r ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่า true,false ของผลลัพธ์ที่ยังไม่รวมตัวทด
int ir = 0; //ให้ตัวแปร ir เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ir<r.length){ //ถ้าค่าตัวแปร ir น้อยกว่าความยาวของ Array ชื่อ r (ซึ่งเท่ากับ 4)
r[ir] = ((!b1[ir])&&b2[ir])||(b1[ir]&&(!b2[ir])); //หาค่าตัวแปรใน Array ชื่อ r ที่ลำดับ ir โดยจะเท่ากับ b1[ir] XOR b2[ir]
ir = ir + 1; //เพิ่มค่า ir ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//ผลลัพธ์ที่รวมตัวทดเป็น true,false
boolean [] r1 = new boolean [4]; //สร้าง Array ชื่อ r1 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่า true,false ของผลลัพธ์ที่รวมตัวทด
int ir1 = 0; //ให้ตัวแปร ir1 เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ir1<r1.length){ //ถ้าค่าตัวแปร ir1 น้อยกว่าความยาวของ Array ชื่อ r1 (ซึ่งเท่ากับ 4)
r1[ir1] = ((!bc[ir1])&&r[ir1])||(bc[ir1]&&(!r[ir1])); //หาค่าตัวแปรใน Array ชื่อ r1 ที่ลำดับ ir1 โดยจะเท่ากับ bc[ir1] XOR r[ir1]
ir1 = ir1 + 1; //เพิ่มค่า ir1 ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//ผลลัพธ์ที่รวมตัวทดเป็นตัวเลข
int [] r2 = new int [4]; //สร้าง Array ชื่อ r2 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่าของผลลัพธ์ที่รวมตัวทดเป็นตัวเลข
int ir2 = 0; //ให้ตัวแปร ir2 เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ir2<r2.length){ //ถ้าค่าตัวแปร ir2 น้อยกว่าความยาวของ Array ชื่อ r2 (ซึ่งเท่ากับ 4)
if(r1[ir2]==true){ //ถ้าตัวแปรใน Array ชื่อ r1 ลำดับที่ ir2 มีค่าเท่ากับ true
r2[ir2] = 1; //ให้ค่าตัวแปรใน Array ชื่อ r2 ลำดับที่ ir2 มีค่าเท่ากับ 1
}
if(r1[ir2]==false){ //ถ้าตัวแปรใน Array ชื่อ r1 ลำดับที่ ir2 มีค่าเท่ากับ false
r2[ir2] = 0; //ให้ค่าตัวแปรใน Array ชื่อ r2 ลำดับที่ ir2 มีค่าเท่ากับ 0
}
ir2 = ir2 + 1; //เพิ่มค่า ir2 ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//แสดงค่าผลลัพธ์เลขฐานสอง
fill(0);
textSize(20);
text(r2,width/2-40,53);
//แสดงภาพผลลัพธ์ของเลขฐานสอง
int ir2 = 0; //ให้ตัวแปร ir2 เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ir2<r2.length){ //ถ้าค่าตัวแปร ir2 น้อยกว่าความยาวของ Array ชื่อ r2 (ซึ่งเท่ากับ 4)
if(r2[ir2]==1){ //ถ้าตัวแปรใน Array ชื่อ r2 ลำดับที่ ir2 มีค่าเท่ากับ 1 ให้แสดงรูปวงกลมสีแดง(หลอดไฟติด)
fill(252,3,19);
ellipse(width/4*ir2+35,height/2,30,30);
}
if(r2[ir2]==0){ //ถ้าตัวแปรใน Array ชื่อ r2 ลำดับที่ ir2 มีค่าเท่ากับ 0 ให้แสดงรูปวงกลมสีดำ(หลอดไฟดับ)
fill(0);
ellipse(width/4*ir2+35,height/2,30,30);
}
ir2 = ir2 + 1; //เพิ่มค่า ir2 ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
จากโค้ด ถ้าเปลี่ยนค่าตัวเลข1 และตัวเลข2 จะทำให้ได้ผลลัพธ์ที่แตกต่างกันออกไปตามการคำนวณของเลขฐานสอง
ตัวอย่าง เปลี่ยนค่าตัวเลข1 เท่ากับ 5 จะได้ดังรูป
background(250);
int num1 = 10; //ค่าตัวเลข1
int num2 = 2; //ค่าตัวเลข2
int [] n1 = new int [4]; //สร้าง Array ชื่อ n1 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่าเลขฐานสองของ num1
int i1 = 3; //ให้ตัวแปร i1 เท่ากับ 3 (ลำดับที่ 3 ใน Array)
int [] n2 = new int [4]; //สร้าง Array ชื่อ n2 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่าเลขฐานสองของ num2
int i2 = 3; //ให้ตัวแปร i2 เท่ากับ 3 (ลำดับที่ 3 ใน Array)
//แสดงตัวเลขที่นำมาลบ
fill(0);
textSize(20);
text(num1+" - "+num2+" = ",10,30);
//ค่าเลขฐานสอง ของ num1
while(i1>=0){ //ถ้าค่าตัวแปร i1 มากกว่าหรือเท่ากับ 0
n1[i1] = num1%2; //Array ชื่อ n1 ลำดับที่ i1 มีค่าเท่ากับ เศษเหลือของ num1 หาร 2
if(num1%2!=0){ //ถ้าเศษเหลือของ num1 หาร 2 ไม่เท่ากับ 0
num1 = num1-1; //ให้ num1 มีค่าลดลง 1
}
else if(num1==1){ //แต่ถ้า num1 เท่ากับ 1
num1 = 2; //ให้ num1 เท่ากับ 2
}
*สร้างเงื่อนไข if(num1%2!=0) และ else if(num1==1) เนื่องจากถ้าหาร 2 ไม่ลงตัวจะทำให้ num1/2 ในบรรทัดล่างติดค่าทศนิยม และเมื่อทำซ้ำต่อไปก็จะได้ค่าเศษเหลือเป็นเลขทศนิยม
num1 = num1/2; //ให้ num1 มีค่าเท่ากับ num1 หาร 2 เพื่อนำค่ามาทำซ้ำเพื่อหาเศษเหลือในลำดับต่อไป
i1 = i1 - 1; //ให้ i1 ลดลง 1 เพื่อเลื่อนลำดับใน Array
}
//ค่าเลขฐาน2 ของnum2
while(i2>=0){ //ถ้าค่าตัวแปร i2 มากกว่าหรือเท่ากับ 0
n2[i2] = num2%2; //Array ชื่อ n2 ลำดับที่ i2 มีค่าเท่ากับ เศษเหลือของ num2 หาร 2
if(num2%2!=0){ //ถ้าเศษเหลือของ num2 หาร 2 ไม่เท่ากับ 0
num2 = num2-1; //ให้ num2 มีค่าลดลง 1
}
else if(num2==1){ //แต่ถ้า num2 เท่ากับ 1
num2 = 2; //ให้ num2 เท่ากับ 2
}
*สร้างเงื่อนไข if(num2%2!=0) และ else if(num2==1) เนื่องจากถ้าหาร 2 ไม่ลงตัวจะทำให้ num2/2 ในบรรทัดล่างติดค่าทศนิยม และเมื่อทำซ้ำต่อไปก็จะได้ค่าเศษเหลือเป็นเลขทศนิยม
num2 = num2/2; //ให้ num2 มีค่าเท่ากับ num2 หาร 2 เพื่อนำค่ามาทำซ้ำเพื่อหาเศษเหลือในลำดับต่อไป
i2 = i2 - 1; //ให้ i2 ลดลง 1 เพื่อเลื่อนลำดับใน Array
}
//แสดงตัวเลขฐานสองที่นำมาลบ
fill(0);
textSize(20);
text(n1+" - "+n2+" = ",100,30);
//ตัวทด
int []c = new int [4]; //สร้าง Array ชื่อ c ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่าเลขฐานสองของ c (ตัวทด)
int ic = 0; //ให้ตัวแปร ic เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ic<c.length){ //ถ้าค่าตัวแปร ic น้อยกว่าความยาวของ Array ชื่อ c (ซึ่งเท่ากับ 4)
if((n1[ic]==0)&&(n2[ic]==0)){ //ถ้าค่าของตัวแปร n1,n2 ในลำดับที่ ic เท่ากับ 0
c[ic-1] = 0; //ให้ค่าตัวแปรใน Array ชื่อ c ในลำดับที่ ic - 1 เท่ากับ 0
}
else if((n1[ic]==1)&&(n2[ic]==0)){ //ถ้าค่าของตัวแปร n1 ในลำดับที่ ic เท่ากับ 1,n2 ในลำดับที่ ic เท่ากับ 0
c[ic-1] = 0; //ให้ค่าตัวแปรใน Array ชื่อ c ในลำดับที่ ic - 1 เท่ากับ 0
}
else if((n1[ic]==0)&&(n2[ic]==1)){ //ถ้าค่าของตัวแปร n1 ในลำดับที่ ic เท่ากับ 0,n2 ในลำดับที่ ic เท่ากับ 1
c[ic-1] = 1; //ให้ค่าตัวแปรใน Array ชื่อ c ในลำดับที่ ic - 1 เท่ากับ 1
}
else if((n1[ic]==1)&&(n2[ic]==1)){ //ถ้าค่าของตัวแปร n1,n2 ในลำดับที่ ic เท่ากับ 1
c[ic-1] = 0; //ให้ค่าตัวแปรใน Array ชื่อ c ในลำดับที่ ic - 1 เท่ากับ 0
}
ic = ic + 1; //เพิ่มค่า ic ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
*boolean เป็นชนิดของตัวแปรที่มี 2 ค่า คือ true และ false
//เปลี่ยนค่าเลขฐานสองของ num1 เป็น true,false
boolean []b1 = new boolean [4]; //สร้าง Array ชื่อ b1 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่า true,false ของ num1
int ib1 = 0; //ให้ตัวแปร ib1 เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ib1<b1.length){ //ถ้าค่าตัวแปร ib1 น้อยกว่าความยาวของ Array ชื่อ b1 (ซึ่งเท่ากับ 4)
if(n1[ib1]==0){ //ถ้าค่าของตัวแปร n1 ในลำดับที่ ib1 เท่ากับ 0
b1[ib1] = false; //ให้ใน Array ชื่อ b1 ในลำดับที่ ib1 เท่ากับ false
}
else if(n1[ib1]==1){ //ถ้าค่าของตัวแปร n1 ในลำดับที่ ib1 เท่ากับ 1
b1[ib1] = true; //ให้ใน Array ชื่อ b1 ในลำดับที่ ib1 เท่ากับ true
}
ib1 = ib1 + 1; //เพิ่มค่า ib1 ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//เปลี่ยนค่าเลขฐานสองของ num2 เป็น true,false
boolean []b2 = new boolean [4]; //สร้าง Array ชื่อ b2 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่า true,false ของ num2
int ib2 = 0; //ให้ตัวแปร ib2 เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ib2<b2.length){ //ถ้าค่าตัวแปร ib2 น้อยกว่าความยาวของ Array ชื่อ b2 (ซึ่งเท่ากับ 4)
if(n2[ib2]==0){ //ถ้าค่าของตัวแปร n2 ในลำดับที่ ib2 เท่ากับ 0
b2[ib2] = false; //ให้ใน Array ชื่อ b2 ในลำดับที่ ib2 เท่ากับ false
}
else if(n2[ib2]==1){ //ถ้าค่าของตัวแปร n2 ในลำดับที่ ib2 เท่ากับ 1
b2[ib2] = true; //ให้ใน Array ชื่อ b2 ในลำดับที่ ib2 เท่ากับ true
}
ib2 = ib2 + 1; //เพิ่มค่า ib2 ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//เปลี่ยนค่าเลขฐานสองของตัวทด เป็น true,false
boolean [] bc = new boolean [4]; //สร้าง Array ชื่อ bc ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่า true,false ของตัวทด
int ibc = 0; //ให้ตัวแปร ibc เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ibc<bc.length){ //ถ้าค่าตัวแปร ibc น้อยกว่าความยาวของ Array ชื่อ bc (ซึ่งเท่ากับ 4)
if(c[ibc]==0){ //ถ้าค่าของตัวแปร c ในลำดับที่ ibc เท่ากับ 0
bc[ibc] = false; //ให้ใน Array ชื่อ bc ในลำดับที่ ibc เท่ากับ false
}
else if(c[ibc]==1){ //ถ้าค่าของตัวแปร c ในลำดับที่ ibc เท่ากับ 1
bc[ibc] = true; //ให้ใน Array ชื่อ bc ในลำดับที่ ibc เท่ากับ true
}
ibc = ibc + 1; //เพิ่มค่า ibc ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//ผลลัพธ์ที่ยังไม่รวมตัวทดเป็น true,false
boolean [] r = new boolean [4]; //สร้าง Array ชื่อ r ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่า true,false ของผลลัพธ์ที่ยังไม่รวมตัวทด
int ir = 0; //ให้ตัวแปร ir เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ir<r.length){ //ถ้าค่าตัวแปร ir น้อยกว่าความยาวของ Array ชื่อ r (ซึ่งเท่ากับ 4)
r[ir] = ((!b1[ir])&&b2[ir])||(b1[ir]&&(!b2[ir])); //หาค่าตัวแปรใน Array ชื่อ r ที่ลำดับ ir โดยจะเท่ากับ b1[ir] XOR b2[ir]
ir = ir + 1; //เพิ่มค่า ir ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//ผลลัพธ์ที่รวมตัวทดเป็น true,false
boolean [] r1 = new boolean [4]; //สร้าง Array ชื่อ r1 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่า true,false ของผลลัพธ์ที่รวมตัวทด
int ir1 = 0; //ให้ตัวแปร ir1 เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ir1<r1.length){ //ถ้าค่าตัวแปร ir1 น้อยกว่าความยาวของ Array ชื่อ r1 (ซึ่งเท่ากับ 4)
r1[ir1] = ((!bc[ir1])&&r[ir1])||(bc[ir1]&&(!r[ir1])); //หาค่าตัวแปรใน Array ชื่อ r1 ที่ลำดับ ir1 โดยจะเท่ากับ bc[ir1] XOR r[ir1]
ir1 = ir1 + 1; //เพิ่มค่า ir1 ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//ผลลัพธ์ที่รวมตัวทดเป็นตัวเลข
int [] r2 = new int [4]; //สร้าง Array ชื่อ r2 ที่มีข้อมูล 4 ตัว(4 bit) เพื่อเก็บค่าของผลลัพธ์ที่รวมตัวทดเป็นตัวเลข
int ir2 = 0; //ให้ตัวแปร ir2 เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ir2<r2.length){ //ถ้าค่าตัวแปร ir2 น้อยกว่าความยาวของ Array ชื่อ r2 (ซึ่งเท่ากับ 4)
if(r1[ir2]==true){ //ถ้าตัวแปรใน Array ชื่อ r1 ลำดับที่ ir2 มีค่าเท่ากับ true
r2[ir2] = 1; //ให้ค่าตัวแปรใน Array ชื่อ r2 ลำดับที่ ir2 มีค่าเท่ากับ 1
}
if(r1[ir2]==false){ //ถ้าตัวแปรใน Array ชื่อ r1 ลำดับที่ ir2 มีค่าเท่ากับ false
r2[ir2] = 0; //ให้ค่าตัวแปรใน Array ชื่อ r2 ลำดับที่ ir2 มีค่าเท่ากับ 0
}
ir2 = ir2 + 1; //เพิ่มค่า ir2 ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
//แสดงค่าผลลัพธ์เลขฐานสอง
fill(0);
textSize(20);
text(r2,width/2-40,53);
//แสดงภาพผลลัพธ์ของเลขฐานสอง
int ir2 = 0; //ให้ตัวแปร ir2 เท่ากับ 0 (ลำดับที่ 0 ใน Array)
while(ir2<r2.length){ //ถ้าค่าตัวแปร ir2 น้อยกว่าความยาวของ Array ชื่อ r2 (ซึ่งเท่ากับ 4)
if(r2[ir2]==1){ //ถ้าตัวแปรใน Array ชื่อ r2 ลำดับที่ ir2 มีค่าเท่ากับ 1 ให้แสดงรูปวงกลมสีแดง(หลอดไฟติด)
fill(252,3,19);
ellipse(width/4*ir2+35,height/2,30,30);
}
if(r2[ir2]==0){ //ถ้าตัวแปรใน Array ชื่อ r2 ลำดับที่ ir2 มีค่าเท่ากับ 0 ให้แสดงรูปวงกลมสีดำ(หลอดไฟดับ)
fill(0);
ellipse(width/4*ir2+35,height/2,30,30);
}
ir2 = ir2 + 1; //เพิ่มค่า ir2 ทีละ 1 เพื่อเลื่อนลำดับใน Array
}
จากโค้ด ถ้าเปลี่ยนค่าตัวเลข1 และตัวเลข2 จะทำให้ได้ผลลัพธ์ที่แตกต่างกันออกไปตามการคำนวณของเลขฐานสอง
ตัวอย่าง เปลี่ยนค่าตัวเลข1 เท่ากับ 5 จะได้ดังรูป
ไม่มีความคิดเห็น:
แสดงความคิดเห็น