คำถามติดแท็ก negative-number

18
เหตุใดจึงต้องใช้ส่วนประกอบสองอย่างแทนเครื่องหมายและขนาดสำหรับหมายเลขที่เซ็นชื่อ
ฉันแค่อยากรู้ว่าถ้ามีเหตุผลทำไมเพื่อเป็นตัวแทน -1 ในเลขฐานสองจะใช้สองส่วน: พลิกบิตและเพิ่ม 1? -1 แทนด้วย 11111111 (ส่วนเสริมสองส่วน) แทน (สำหรับฉันที่เข้าใจง่ายขึ้น) 10000001 ซึ่งเป็นเลขฐานสอง 1 ที่มีบิตแรกเป็นค่าลบ คำเตือน: ฉันไม่พึ่งพาเลขคณิตเลขฐานสองสำหรับงานของฉัน!

20
ทำให้จำนวนลบเป็นบวก
ฉันมีวิธีการจาวาที่ฉันรวมชุดของตัวเลข อย่างไรก็ตามฉันต้องการให้ตัวเลขเชิงลบใด ๆ ถูกถือว่าเป็นผลบวก ดังนั้น (1) + (2) + (1) + (- 1) ควรเท่ากับ 5 ฉันแน่ใจว่ามีวิธีง่าย ๆ ในการทำเช่นนี้ - ฉันไม่รู้

6
วิธีที่ดีที่สุดในการทำให้โมดูลัสของ Java ทำงานอย่างที่ควรจะเป็นกับตัวเลขติดลบ?
ใน java เมื่อคุณทำ a % b ถ้า a เป็นลบมันจะส่งกลับผลลัพธ์ที่เป็นลบแทนที่จะพันรอบ b อย่างที่ควรจะเป็น วิธีใดที่ดีที่สุดในการแก้ไขปัญหานี้ วิธีเดียวที่ฉันคิดได้คือ a < 0 ? b + a : a % b



7
เป็นไปได้ไหมที่จะแยกความแตกต่างระหว่าง 0 ถึง -0
ฉันรู้ว่าค่าจำนวนเต็ม0และ-0เป็นหลักเหมือนกัน แต่ฉันสงสัยว่าเป็นไปได้ไหมที่จะแยกความแตกต่างระหว่างพวกเขา ตัวอย่างเช่นฉันจะทราบว่าตัวแปรที่ได้รับมอบหมาย-0? bool IsNegative(int num) { // How ? } int num = -0; int additinon = 5; num += (IsNegative(num)) ? -addition : addition; ค่าที่-0บันทึกไว้ในหน่วยความจำเป็นวิธีเดียวกับ0หรือไม่

3
เหตุใดค่า int ที่เป็นลบมากที่สุดจึงทำให้เกิดข้อผิดพลาดเกี่ยวกับการโอเวอร์โหลดของฟังก์ชันที่ไม่ชัดเจน
ฉันกำลังเรียนรู้เกี่ยวกับการทำงานมากเกินไปใน C ++ และเจอสิ่งนี้: void display(int a) { cout << "int" << endl; } void display(unsigned a) { cout << "unsigned" << endl; } int main() { int i = -2147483648; cout << i << endl; //will display -2147483648 display(-2147483648); } จากสิ่งที่ฉันเข้าใจค่าใด ๆ ที่กำหนดในintช่วง (ในกรณีของฉันintคือ 4 ไบต์) จะเรียกdisplay(int)และค่าใด ๆ ที่อยู่นอกช่วงนี้จะไม่ชัดเจน …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.