計算機會認為( b)是(0 b)還是(( 1) b)?

時間 2021-05-31 04:42:18

1樓:

就是乙個「取負」操作,不是減也不是乘。

在高階語言中常表現為「-x」的形式。語法樹中也是一元操作「(- (x))」。(「取正」運算子「+」亦如此,此時+和-就不是加和減了)

在一般機器底層也是乙個單引數的取負指令(當然也有些例外的)。

對於整數、浮點數等基本型別基本如此,有部分機器架構例外(那些架構中底層確實是用0去減)。

而對於(支援運算子過載的)物件來說更是如此,這個則沒有例外。

乙個物件型別,可以不去定義「被整數減」、「被整數乘」、「乘整數(嗯左乘右乘不一樣,交換律不是對什麼都成立的)」這些操作,但以上這些都不妨礙它擁有「取負」操作的定義。

2樓:hengjin xu

查了下資料總結如下:

只針對x86,b可能是代指乙個立即數,乙個變數,且分整數 ,浮點數的情況:

1.如果是立即數,在編譯器編譯時,直接就是補碼。

2.如果是變數,整數就是乙個 neg指令,浮點數是xorps.

neg指令在cpu中的ALU(算術邏輯單元)中,直接支援該指令,見wiki Arithmetic logic unit

"而xorps是sse中的指令,不是很了解,還希望達人解釋。

3樓:

對於計算機來說,-b與b的關係:

對於整形來說,是補碼。

對於浮點數,是符號位相異。

對於自定義型別,是自定義operator-決定的。

其實就是沒什麼關係,因為都是二進位制。b不一定是b,取決於你的上下文。

4樓:Milo Yip

- 和 + 通常既可以是 binary operator,又可以是 unary operator。

(-b) 中的 - 是 unary operator。

5樓:XZiar

計算機並看不到b這種東西,具體得看編譯器怎麼做。

也就是說,如果自己寫編譯器,-b也可以被編譯成2*3*4*5*6*7*8*9*10/10/9/8/7/6/5/4/3/2*b - 2*b,(不過這種設計會出問題)

6樓:

CPU有取負數指令,直接變負。低檔的沒有取負數指令也有取邏輯反指令,再加一條遞增指令。再不濟也有邏輯運算,和全1異或再遞增。

這些指令編譯器都會安排好的,所以不存在是0-還是-1*的說法,-本身就是一種運算。

計算機中記憶體3B是什麼?

張玉明 計算機是2進製的,只能識別0和1 0或1稱為乙個二進位制位 0000 0000 8個2進製位稱為b,叫位元組 0000 0000 0000 0000稱為字,1字 2位元組 1024 0000 0000 1kb,表示1024個位元組 1024 1kb 1mb,表示個1024 1024個位元組 ...

這個計算機網路題為什麼選B?

weiyu 子網掩碼 255.255.255.224 轉化為二進位制11111111.11111111.11111111.11100000 27 與子網掩碼相與,網路位址為00001010.01101110.00001100.00000000 即10.110.12.0 雖然A選項的位址與子網掩碼相與...

什麼體系架構或CPU架構的計算機才需要BIOS或UEFI?

瀉藥UEFI說到底也還是BIOS,而BIOS本來就是IBM搞出來用在PC上的。所以回答只有植根於IBM PC體系的計算機才一定需要BIOS,目前來說只有X86體系的才需要BIOS,別的架構上基本都不是必須的選項。雖然UEFI一直放了兩副圖是在手機螢幕和大型機上跑的EFI Shell,但是事實上並沒有...