ข้ามไปที่เนื้อหาหลัก

apache tomcat

1. download apache tomcat
ผมโหลด ตัว Core : tar.gz นะ

2. extract to folder
3.
$ bin/startup.sh

แล้วจะเข้าเวปได้จาก http://localhost:8080

5. เข้า tomcat manager
6. มันจะถาม username, password
ซึ่งจริงๆต้อง ไปใส่ username, password ในไฟล์ /conf/tomcat-users.xml ก่อน

ตามนี้
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="dsin" password="somepassword" roles="manager,admin"/>
</tomcat-users>


แล้ว restart tomcat ทีนึง

>> ถ้า start webapp บางตัวไม่ติด ให้ไปดูไฟล์ log/catalina.out หรือ

$ tail -f log/catalina.out
ก็ได้

>> ถ้าอยากเปลี่ยน port ที่รัน tomcat แก้ใน conf/server.xml

<Connector port="8088" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>


อยากเปลี่ยน version ของ tomcat แก้ใน
etc/default/tomcat7
JAVA_HOME=/usr/lib/jvm/java-7-oracle



วิธี deploy webapp ( เขียน app ลง tomcat นั่นแหละ )

วิธีง่ายสุด

1. ก๊อปไฟล์ war ที่ิ build จาก mvn clean install ไปวาง
sudo cp /vagrant/HelloSpringVagrant/target/HelloSpring.war /var/lib/tomcat7/webapps/
2. restart tomcat

Build + Deploy Auto โดยใช้ MVN

วิธี install maven

pom.xml

$ mvn clean tomcat7:runwar
Build + Deploy Auto โดยใช้ Ant

1. ลง ant ก่อน apt-get install ant
2. ทำให้ ant รู้จัก apache tomcat
copy ไฟล์ lib/catalina-ant.jar ไปลงที่ ant library directory
ของผมอยู่ที่ /usr/share/ant/lib ( เราสามารถดูจาก snaptic ได้ )

3.
สร้างโฟสเดอร์ app ไว้ที่ไหนก็ได้บนเครื่อง เช่น [project dir]
ใส่ไฟล์ build.xml ไว้ที่ top level ของ project directory แล้วใส่ build.properties ตามนี้ ไว้ที่เดียวกัน

3.1 build.xml
Ant จะอ่าน build conf จาก build.xml
ดูตัวอย่าง ไฟล์ build.xml
- เราอาจเปลี่ยน project name="My Project"
- ถ้าเปลี่ยน port tomcat ต้องแก้
<property name="manager.url" value="http://localhost:8088/manager"/> เป็น port ใหม่ด้วย

3.2 config.properties
ถ้ามี config พวก specific ที่ต่างๆกันในแต่ละ development environment ให้ไปเขียนไว้ใน build.properties ซึ่งมันจะ override build.xml อีกที

config.properties
# Context path to install this application on
app.path=/hello

# Tomcat 6 installation directory
catalina.home=/home/dsin/apache-tomcat-6.0.18

# username password ของ Tomcat manager ที่ตั้งไว้ใน conf/tomcat-users.xml
manager.username=dsin
manager.password=somepassword

4. อย่าลืม start tomcat ก่อน จากนั้น
ไปที่ top level

$ ant install

ถ้าสำเร็จ tomcat จะสร้างไฟล์ไว้ที่ $CATALINA HOME/webapps/ โดยอัตโนมัติ
ถ้าลงแล้ว fail อยากลงใหม่ / หรือ ต้องการแก้โค้ด ใช้

$ ant reload

ถ้าอยาก remove
$ ant remove # uninstall from /webapps/

** NOTE : ant จะอ่าน config file จาก build.xml แล้วทำตาม config file นั้นน้ะจ้ะ

5. ทดลองสร้าง Class HttpServlet ใน src
เช่น
[project dir]/src/mypackage/Hello.java
NOTE : สร้าง dir ชื่อแพคเกจก่อน ในที่นี้คือ mypackage

เอาคลาสใน src ไปสร้าง war file ด้วย

$ ant dist


6. ต่อไปพวก static ไฟล์ทั้งหลาย
เอาไฟล์ hello.jsp, index.html ไว้ที่ [project dir]/src/web
tomcat.gif ไว้ใน [project dir]/src/web/images

ใส่ไฟล์ web.xml ไว้ที่ [project dir]/web/WEB-INF

บอก tomcat ว่า จะให้ แพคเกจนี้ไปขึ้นที่ URI ไหน โดยเพิ่มโค้ดในไฟล์ web.xml


reference
hello
โฟลเดอร์ที่แนะนำให้สร้างในโฟลเดอร์ app ของเรา
docs/src/
.java to generate Servlets, JavaBeans
ส่วนใหญ่ คลาส ของเวปจะถูกเขียนเป็น packages ดังนั้น โฟลเดอร์ src นี้ก็จะมี โฟลเดอร์ย่อยๆ เป็น โฟลเดอร์ของ package อยู่

web/

นี่คือ document-root เลยแหละ
เอาไว้ใส่พวกไฟล์ static ทั้งหลาย (.jsp , .html, .js , .css, image files)

web/WEB-INF/
เก็บไฟล์ config, application server ไม่อนุญาตให้เข้าถึง directory นี้ผ่านทางเวปได้

• web.xml:
• tag : library descriptor files
• classes/ server-side classes: servlets, utility classes, and JavaBeans components.
If your classes are organized into packages, the package structure should be replicated as directories under classes/
• tags/: contain tag files implementing tag libraries
• lib/: contain JAR archives of any libraries called by the server-side classes

web/META-INF/context.xml
Tomcat-specific configuration, e.g., for logging, data sources, etc.

และระหว่าง development แนะนำให้สร้างสองไดเรกทอรี่ข้างล่างนี้ด้วย
build/: the image to be archived and deployed to the container.
dist/
: the binary image to be created for distribution.

build and dist directories should not be archived in source code control. Likewise, it is recom-
mended that any libraries you need, for example JDBC drivers, should not be stored in source code control. They should be copied in at build time with ant.


แถมๆๆ
[eclipse] Add Tomcat Project to Tomcat  

Project Properties

   tick Is a Tomcat Project
    and put the Context name to the /urinaja
   In this case, URL will be http://localhost:8080/urinaja
     if not shown up, try to restart tomcat.




ความคิดเห็น

ติดตามบล็อกบนเฟซบุ๊คเพจ

โพสต์ยอดนิยมจากบล็อกนี้

อยู่เหงาๆ เลาไปเที่ยว - เที่ยวเชียงรายด้วยตนเอง โดยไม่มีรถ เช่ารถก็ไม่ได้เช่าน้ะจ้ะ นั่งรถสาธารณะล้วนๆแจร้ ตอนที่หก

ดึกแล้ว

ตลาดชา ที่หลัก กิโลเมตร ที่ 0 ดอยแม่สลอง
ขากลับโรงแรม เขาขับรถพาแวะ ตรงตลาดชา ตรงหลัก กม ที่ 0 เพิ่งเห็นว่าสุสานนายพลต้วน ซีเหวิน กองพล 93 ก็อยู่แถวๆนั้น แต่ป้ายบอกว่า 500 เมตรจากตลาดชา ประกอบกับมองไปเป็นทางขึ้นเขา แล้วก้อค่อนข้างมืดด้วยเลยไม่ได้ไป


หลักกิโลเมตรที่ 0 ดอยแม่สลอง

ตอนอยู่บนรถหลังจากกลับจากตลาดชา ลูกเจ้าของรีสอร์ต ยังถามว่าจะแวะเซเว่นเอาอะไรไหม

แล้วตอนเช้าพรุ่งนี้จะพาไปตลาดเช้า ที่ชาวเขาเอาของมาขาย
ประมาณ 7.00 ก่อนกินข้าวเช้าเวลา 08.30 ใจดีจริงๆ

plan เดิมคือ 7.00 เดินไปไร่ชา 101 จากที่ก่อนมาได้โทรไปถามไร่ชาว่าเปิดเจ็ดโมง
แต่มีแนะนำโดยคนในพื้นที่ให้ไปตลาดเช้า
ยัง LINE ไปบอกเพื่อนที่กทม ว่า อาจจะไม่ได้ไปไร่ชาแล้ว
( แต่หลังจากนี้ก้อมีเรื่องจับพลัดจับผลูให้ได้ไปไร่ชาที่ใหญ่กว่า ไร่ชา101 นั่นก้อคือ ไร่ชาฉุยฟง อดใจไว้เด๋วเล่าให้ฟัง )

บรรยากาศยามเย็นที่ตลาดชาที่ดอยแม่สลอง จังหวัดเชียงราย
พอกลับที่พัก คุณเจ้าของรีสอร์ตถามว่าทานมื้อเย็นมายัง
บังเอิญว่าเลาทานมาแล้ว เลาเลยอุดหนุนโกโก้เย็น 60 THB แทน
มีหนุ่มสาวคู่นึงที่ไปด้วยกัน เขายังไม่ทานมา เขาก้อทานที่โรงแรมนั่นแหละ
หนุ่มนี่ม…

เทคนิคคิดเลขเร็วโดยใช้ วิธีคิด แบบ เวทคณิต ( Vedic Mathematics example )

จากที่สงสัยเรื่อง ลูกคิด ของ จินตคณิต ที่ลองไปค้นดู
ปรากฎว่า เจอ เวทคณิต ซึ่งเขาบอกว่า อยู่ในคัมภีร์พระเวท

ลองอ่านดูแล้ว รู้สึกว่าฝึกสมอง ก็ทำให้คิดเลขเร็วดี
เลยสรุปมาให้ ตามนี้

Tutorial 1

การลบเลข
ALL FROM 9 AND THE LAST FROM 10
ทุกตัวลบจาก 9 และตัวสุดท้ายลบจาก 10

เช่น 1000 - 357 = 643
10,000 - 1,049 = 8951

ถ้า 1,000 - 83 ให้มองว่ามี 0 อยู่ข้างหน้า
เป็น
1,000 - 083 = 917

ฝึกบ่อยๆ ก็คล่อง แล้วก็ไม่ต้องใช้เครื่องคิดเลขด้วย
ลองทำดูสิ
1) 1000 - 777 =
2) 1000 - 283 =
3) 1000 - 505 =
4) 10,000 - 2345 =
5) 10,000 - 9876 =
6) 10,000 - 1011 =
7) 100 - 57 =
8) 1000 - 57 =
9) 10,000 - 321 =
10) 10,000 - 38 =

3,000 - 467 ก็ทำเหมือนกัน โดยลบตัวแรกสุดของ 3,000 ไป 1
จากนั้นก็ทำเหมือนเดิม จะได้ว่า 3,000 - 467 = 2,533

Tutorial 2
VERTICALLY AND CROSSWISE สำหรับตัวเลขที่น้อยกว่าฐานนิดหน่อย

ลอง 88x98

88 น้อยกว่า 100 อยู่ 12
98 น้อยกว่า 100 อยู่ 2
12x2 = 24
88-2 หรือ 98-12 ได้ 86
ดังนั้นตอบ 8,624

ดูอีกตัวอย่าง
หรือ

ลองทำนี่ดู
1) 87 x 98 =
2) 88 x 97 =
3) 77 x 98 =
4) 93 x 96 =
5) 94 x 9…

วิธีใช้ ย่อๆ เกี่ยวกับ Matrix กับ Vector ( มาจาก CASIO-991MS manual )

Matrix

เปลี่ยน mode เป็น Matrix
กด mode ไปเรื่อยๆ จนเจอ MAT

วิธีใส่ Matrix เข้าไป
จิ้ม MAT ( ตรงเลข 4 )
DIM -- สร้าง Matrix ใหม่ - เราจะสร้าง Matrix เก็บไว้ในตัวแปรได้สามตัว คือ A, B, C ( Trick : ตอนใส่ค่า a11, a12, .. ถ้าอยากข้ามไปให้กดลูกศร ขึ้น ลง ซ้าย ขวา ได้เลย )
รุ่นนี้ มันใส่ได้มากสุด 3x3 นะ ถ้าใส่ 4 ไป มันจะ dimension error
EDIT -- แก้ไข Matrix ที่สร้างไว้แล้ว
MAT -- เอา Matrix ออกมาใช้งาน

Add : MatA + MatB
Subtract : MatA - MatB
Multiply with scalar : MatA x 3 หรือ 3 x MatA
Multiply : MatA x MatB
Det : Det MatA
Transpost : Trn MatA
Inverse :MatA -1
Absolute Value of Each Element : Abs MatA

ผลลัพธ์มันจะได้เป็น
MatAns11
ซึ่งเราสามารถกด ซ้าย ขวา ขึ้นลงได้เหมือนเลื่อนดู Element จาก Matrix เลย

Vector
เปลี่ยน mode เป็น Vector
กด mode ไปเรื่อยๆ จนเจอ VCT

วิธีใส่ Vector เข้าไป
จิ้ม VCT ( ตรงเลข 5 )
DIM -- สร้าง Vector ใหม่ - เราจะสร้าง Vector เก็บไว้ในตัวแปรได้สามตัว คือ A, B, C ( Trick : ตอนใส่ค่า a1, a2, .. ถ้าอยากข้ามไปให้กดลูกศร ซ้าย ขวา ได้เลย )
EDIT -- แก้ไข Vector ที่สร้างไว้แล้ว
VCT -- เอา Vector ออกม…

อยู่เหงาๆ เลาไปเที่ยว - เที่ยวเชียงรายด้วยตัวเอง โดยไม่มีรถ เช่ารถก็ไม่ได้เช่าน้ะจ้ะ นั่งรถสาธารณะล้วนๆแจร้ ตอนแรก วางแผนเที่ยว

เชียงราย ม่วนใจ๋
ยอมรับเลยว่า หาข้อมูลค่อนข้างยาก
กระทู้รีวิว ใน pantip ที่บอกไม่มีรถไป คือ ไม่มีรถส่วนตัวไป สุดท้ายก้อไปเช่ารถขับกันหมด
สุดท้ายเลาก็ไปผจญภัยมาจนได้ นี่คือตอนแรกซีรี่ส์เชียงรายของเราน้ะจ้ะ 
กล่าวถึงว่า จะไปไหนบ้าง และ วิธีเดินทางในตัวเมืองเชียงราย และ ออกนอกเมืองเชียงรายไปยังที่เที่ยวยังไง


0) ตั๋ว 0 บาท
จริงๆ ทริปนี้จับพัดจับผลู ดันกด ตั๋ว 0 บาท ได้ของ VietJet ซึ่งเขาเพิ่งเปิดเส้นทางใหม่ กรุงเทพฯ-เชียงราย เลยมีโปรโมชั่นนี้ออกมา

จริงๆ บอกว่า 0 บาท แต่มันมีค่าภาษีสนามบิน ค่าอื่นๆ อีก รวมแล้วไปกลับ 508 บาทน้ะจ้ะ
( ภาษีสนามบิน 100 THB, PMT Fee 77 THB, Admin Fee Domestic Thai 77 THB รวมสองขา 508 บาท รวม VAT เป็น 529.56 บาท )
เวลาค่อนข้างโอเคนะ มีคนเคยบอกว่า low cost เวลาไม่ค่อยโอเค แต่เลาว่าเวลานี่โอเคเลย
ขาไป 06.30 สนามบินสุวรรณภูมิ - 07.55 สนามบินแม่ฟ้าหลวงเชียงราย
ขากลับ 15.15 สนามบินแม่ฟ้าหลวงเชียงราย - 16.45 สนามบินสุวรรณภูมิ
ขึ้นที่สนามบินสุวรรณภูมิ (BKK) จย้ะ ไม่ใช่สนามบินดอนเมือง
มีคนบอกว่าให้สังเกตรหัสถ้า BKK คือ สนามบินสุวรรณภูมิ อย่าไปผิดสนามบินเชียว

ขอบคุณ ตั๋ว 0 บาท …

อยู่เหงาๆ เราไปเที่ยว - วัดระฆังโฆสิตาราม

เอนทรีนี้เป็นส่วนหนึ่งของ serie ท่องเที่ยว ดูบทความท่องเที่ยว อื่นๆ ของผม ได้ที่ ลิงก์นี้ นะครับ



จากที่ คราวก่อน ไปวัดอรุณฯ เขามีให้ล่องเรือไปวัดระฆัง เลยเดาๆ ได้ว่า วัดอยู่ไม่ไกล

ประกอบกับได้ยินเรื่องของ สมเด็จพระพุฒาจารย์ (โต พรหมรังสี) มานาน



วันนี้เลยลองไปสักหน่อย

นั่งเรือธงสีสัม ( 13 บาทตลอดสาย ) ไปลงท่าช้าง

มองจากท่าช้าง ตรงกลาง เป็น สมาคม พุทธศาสนา อะไรซักอย่างทางซ้ายของรูป คือ พระอุโบสถ วัดระฆัง
แล้วนั่งเรือข้ามฟาก ( 3 บาท ) ไปท่าวัดระฆัง

วัดระฆังโฆสิตารามวรมหาวิหาร
นกเยอะมาก ปลาก็เยอะ

แบบว่า เขามีขายอาหารสำหรับเลี้ยงปลา ( แต่แอบได้ยินคนซื้อบ่นว่าขนมปังขึ้นรา - -! )


ปลาเยอะกว่าที่วัดยานนาวาอีก ตัวใหญ่ๆทั้งนั้น
คราวนี้เราไป มันเปิดแค่อุโบสถ วิหาร แล้วก็ หอไตร แหะ ไอตรง กรอบสีส้มเข้มๆ ซ่อมอยู่


แผนที่วัดระฆังท่าวัดระฆัง ( แม่น้ำเจ้าพระยา ) อยู่ด้านล่าง
คลิกที่ภาพเพื่อดูภาพขยาย
หรือ ดูต้นฉบับที่ เวปไซท์วัดระฆัง
ไปถึงก็เดินดูรอบๆ พระอุโบสถ คนเยอะเหมือนกันนะ

พระเจดีย์
พระเจดีย์ อีก 2 องค์
couple ?
พระปรางค์
สถาปัตยกรรมรัตนโกสินทร์ยุคต้น ยึดถือเป็นแบบฉบับของพระปรางค์ที่สร้างในยุคต่อมา
แล้ว…

วิธี ยื่น ภาษีเงินได้ บุคคลธรรมดา ภงด 91 ทางเวปไซท์ ( จ่าย ภงด 91 ออนไลน์ )

ใครที่เสียภาษีบ้าง

คนโสดเงินเดือน 16,585 บาท จึงเริ่ม เสียภาษีเงินได้บุคคลธรรมดา
( เงินเดือนอัตรานี้หมายถึง พนักงานที่ไม่มีรายการ ลดหย่อน ใด ๆ นอกเหนือจากประกันสังคม )

ใครที่ต้อง ยื่น ภาษี บ้าง

ถ้าเงินเดือนไม่ถึงเกณฑ์ที่ต้องเสียภาษีเงินได้ แต่ก็มีหน้าที่ต้องยื่นแบบ หากเข้าตามเกณฑ์ดังต่อไปนี้
- คนโสดมีเงินได้ทั้งปีเกิน 50,000 บาท
- มีคู่สมรส มีเงินได้ทั้งปีไม่ว่าฝ่ายเดียวหรือทั้งสองฝ่ายรวมกันเกิน 100,000 บาท

ระยะเวลาในการยื่นภาษี

1 มกราคม ถึง 31 มีนาคม ของทุกปี

การ ชำระ ภาษี ผ่าน ทาง อินเตอร์เน็ต

1. เข้าไปที่ http://rdserver.rd.go.th




ถ้าได้เงินเดือนจากบริษัท อย่างเดียว ให้ยื่นแบบ ภงด.91
แต่ถ้านอกเหนือจากงานประจำ ยังมีรายได้จากทางอื่นอีก ก็จะต้องยื่นแบบ ภงด.90

2. พอกดเข้าไปแล้วจะเจอหน้า login

หมายเลขผู้ใช้ คือ เลขประจำตัวประชาชน
รหัสผ่าน ต้องมีความยาว 8 ตัวอักษร

หน้า login ของการ เสียภาษีเงินได้บุคคลธรรมดา
ลงทะเบียน
ถ้ายังไม่ได้กดลงทะเบียนให้กด ลงทะเบียน มันจะไปยังหน้านี่



หน้าลงทะเบียน เลือก บุคคลธรรมดา สัญชาติไทย น้ะจ้
ทำตามขั้นตอนลงทะเบียนจนจบ
ถ้าเราสัญชาติไทย พอลงทะเบียนเสร็จจะได้ ภาพพิม…

อยู่เหงาๆ เราไปเที่ยว - วัดอรุณราชวราราม ( วัดแจ้ง ) + วัดสระเกศ ( ภูเขาทอง )

เอนทรีนี้เป็นส่วนหนึ่งของ serie ท่องเที่ยว ดูบทความท่องเที่ยว อื่นๆ ของผม ได้ที่ ลิงก์นี้ นะครับ

คำเตือน เอ็นทรีนี้รูปเยอะมากกกก ควรปิดบิตก่อนดู

ผ่างๆๆ ท่านสามารถรับชมเอนทรีนี้ผ่าน url http://tinyurl.com/goldenMount ได้ด้วย

วันนี้ตั้งใจไปวัดอรุณฯ

เดินทางทางน้ำเหมือนเดิม

แต่คราวนี้นั่งเรือ ธงสีฟ้า ( คราวก่อน นั่งเรือ ธงสีส้ม )

พอถึงท่าสาทร เขาบอกว่า ให้ลงลำที่จอดอยู่ได้เลย เก็บตังในเรือ

ก็ งงๆ เดินลงไป

เหมือนเดิมครับ

ชูชีพอยู่ใต้ที่นั่งของท่าน
พอเรือออกสักพัก มีไกด์ มาบรรยาย

อ้าว กรำ

ขึ้นผิดเรือรึเปล่า

นี่มันเรือท่องเที่ยว 150 บาท ไม่ใช่เร๊อะ

กะลังอึ้งๆอยู่

แต่พอไกด์พูดไปสักพัก ก็เลยรู้ว่า 150 บาท มันราคาเหมาวัน

แล้วก็ได้ความรู้ของท่าเรือ แล้วก็สองข้างทาง




เรือธงฟ้านี่มันไปสุดที่ท่าพระอาทิตย์เท่านั้นเองนะ แล้วก็กลับ

ตอนไปมีสาวคนนึง ถามว่า จะไปวัดสระเกศ ไปทางไหน

ถ้าฟังไม่ผิด คนเก็บตังบนเรือ บอกว่า ท่ามหาราช

จากนั้นก็คุยอะไรกันไม่รู้ ไม่ได้ยินแล้วล่ะ




เรือธงฟ้า มันใหญ่กว่า น่าหวาดเสียวน้อยกว่า น้ำกระเด็นน้อยกว่า แพงกว่า เรือธงสีส้ม

คราวนี้รู้และ นั่งริมฝั่งธน ได้มาหลายรูปเหมือนกัน แต่วันนี…

Andrea Vedaldi's matlab sift toolbox library version 09.17 on ubuntu linux

กว่าจะลงได้ ลากเลือด จดไว้หน่อย

เสือกใช้ gcc version เก่า

>> sift_compile

Warning: You are using gcc version "4.3.3-5ubuntu4)". The earliest gcc version supported
with mex is "4.0.0". The latest version tested for use with mex is "4.2.0".
To download a different version of gcc, visit http://gcc.gnu.org

เอ้า จัดไป เวอร์ชั่นเก่าก็ได้

$ sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc
ข้างบน คือ วิธีหน้าโง่ จริงๆ เข้าไปแก้ใน ไฟล์ คอนฟิก ${HOME}/.matlab/R2008b/mexopts.sh ก็ได้

CC='/usr/bin/gcc-4.1' #'gcc'




gcc version เก่า แม่ง ไม่มี stdc++ มาให้อีก ลิงก์ lib ให้มันซะ ไม่งั้นมัน error ld library ( จริงๆ เซต LD_LIBRARY_PATH ก็น่าจะได้ )

$ sudo ln -s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so

เท่านั้นแหละ compile ผ่านละ

พอไป make บน linux

$ make
mex -I. CFLAGS='$CFLAGS -I. -pedantic -Wall -g -O3 -Wno-variadic-macros ' imsmooth.c -o imsmooth
mex: unrecognized option '-I.'
This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6)
%&-lin…

matlab shortcut shortkey preferences in ubuntu linux

default เป็น ของ emac

ไม่ถูกใจ อยากใช้เหมือน windows เซตตามนี้


ปล. มีให้เซต สองที่นะ Command Window Key กับ Editor debugger key binding ที่อยู่ทางขวา ที่ไม่ได้วงไว้ด้วยอ่ะ

เลขฐานสอง ติดลบ เรื่องที่อาจจะลืมกันไปแล้ว

คอมพิวเตอร์ใช้การเปิดปิด หลอดสุญญากาศ
ดังนั้นค่าที่เป็นไปได้คือ 0 กับ 1 ไม่มีติดลบ


จึงกำหนดให้ใช้ 2's complement มากำหนดเลขลบ
วิธีทำคือ เปลี่ยนเลข 1 เป็น 0 เปลี่ยนเลข 0 เป็น 1 แล้วบวกหนึ่ง
เช่น 1 คือ 00000001
เปลี่ยนเป็น 11111110 บวก 1 ได้ 11111111

บิตที่อยู่หน้าสุดจะบอกว่าเป็นเลขบวกหรือลบ ( 0 = +, 1 = -)

พิสูจน์
จาก สมการคณิตศาสตร์​ 1 + (-1) = 0
00000001 + ???????? = 0
00000001 + (11111110 + 000000001 ) = 0
นั่นเอง

วิธีที่ง่ายกว่านั้นในการทำ 2's complement คือ
1. หา 1 ตัวสุดท้าย
0101001
2. invert ตัวหน้า 1 ทั้งหมด
1010111

สำหรับคนที่ลืมไปแล้ว
1's complement คือเปลี่ยนเลข 1 เป็น 0 เปลี่ยนเลข 0 เป็น 1 ตามปกติ
เช่น ~1
1 = 00000001
~1 = 11111110 ซึ่งมีค่าเท่ากับ -2


ที่มา : วิชาการดอทคอม, wikipedia