數學中的真值指什么?真值是一個變量本身所具有的真實值,它是一個理想的概念,一般是無法得到的 。所以在計算誤差時,一般用約定真值或相對真值來代替
數學邏輯中真值是什么意思在邏輯中,真值是指示一個陳述在什么程度上是真的 。
在經典邏輯中,唯一可能的真值是真和假 。但在其他邏輯中其他真值也是可能的: 模糊邏輯和其他形式的多值邏輯使用比簡單的真和假更多的真值 。在代數上說,集合 {真,假} 形成了簡單的布爾代數 。
什么是機器數、真值?
1、機器數
一個數在計算機中的二進制表示形式,叫做這個數的機器數 。機器數是帶符號的,在計算機用一個數的最高位存放符號, 正數0,負數為1 。12
比如,十進制中的數 +3 ,計算機字長為8位,轉換成二進制就是0000 0011 。如果是 -3 ,就是 1111 1101。那么,這里的 00000011 和1111 1101 就是機器數 。機器數包含了符號和數值部分 。
2、真值
因為第一位是符號位,所以機器數的形式值就不能很好的表示真正的數值 。例如上面的有符號數1111 1101,其最高位1代表負,其真正數值是
-3 而不是形式值253(1111
1101按無符號整數轉換成十進制等于253) 。所以,為區別起見,將帶符號位的機器數對應的真正數值稱為機器數的真值 。
例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –0111 1111 = –127;這里所說的比如-3二進制代碼為10000011,就是我們計算機里面對-3表示的源碼 。下面介紹源碼
首先說明一點
在計算機內,有符號數有3種表示法:原碼、反碼和補碼 。
3、原碼
原碼就是符號位加上真值的絕對值, 即用第一位表示符號, 其余位表示值. 比如如果是8位二進制
[+1]原 = 0000 0001
[-1]原 = 1000 0001
因為第一位是符號位, 所以若是8位二進制數,其取值范圍就是:
[1111 1111 , 0111 1111]
即[-127 , 127]
原碼是人腦最容易理解和計算的表示方式 。
4 、反碼
反碼表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外 。
[+1] = [ 00000001 ]原碼 = [ 00000001 ]反碼;
[-1] =[ 10000001 ]原碼 = [ 11111110 ]反碼;
可見如果一個反碼表示的是負數, 人腦無法直觀的看出來它的數值. 通常要將其轉換成原碼再計算 。
什么是二進制的補碼?
注明:正數的補碼與負數的補碼一致,負數的補碼符號位為1,這位1即是符號位也是數值位,然后加1
補碼借鑒的模概念,雖然理解起來有點晦澀難懂 ??梢蕴^
模的概念:把一個計量單位稱之為模或模數 。例如,時鐘是以12進制進行計數循環的,即以12為模 。
在時鐘上,時針加上(正撥)12的整數位或減去(反撥)12的整數位,時針的位置不變 。14點鐘在舍去模12后,成為(下午)2點鐘(14=14-12=2) 。從0點出發逆時針撥10格即減去10小時,也可看成從0點出發順時針撥2格(加上2小時),即2點(0-10=-10=-10+12=2) 。因此,在模12的前提下,-10可映射為+2 。由此可見,對于一個模數為12的循環系統來說,加2和減10的效果是一樣的;因此,在以12為模的系統中,凡是減10的運算都可以用加2來代替,這就把減法問題轉化成加法問題了(注:計算機的硬件結構中只有加法器,所以大部分的運算都必須最終轉換為加法) 。10和2對模12而言互為補數 。同理,計算機的運算部件與寄存器都有一定字長的限制(假設字長為16),因此它的運算也是一種模運算 。當計數器計滿16位也就是65536個數后會產生溢出,又從頭開始計數 。產生溢出的量就是計數器的模,顯然,16位二進制數,它的模數為2^16=65536 。在計算中,兩個互補的數稱為“補碼” 。比如一個有符號8位的數可以表示256個數據,最大數是0
1 1 1 1 1 1 1(+127),最小數1 0 0 0 0 0 0 0
(-128);那么第255個數據,加2和減254都是一樣的效果得出的結果是第一個數據
,所以2和254是一樣的效果 。對于255來說2和254是互補的數 。
求一個正數對應補碼是一種數值的轉換方法,要分二步完成:
第一步,每一個二進制位都取相反值,即取得反碼;0變成1,1變成0 。比如,00001000的反碼就是11110111 。
第二步,將上一步得到的反碼加1 。11110111就變成11111000 。所以,00001000的二進制補碼就是11111000 。也就是說,-8在計算機(8位機)中就是用11111000表示 。
不知道你怎么看,反正我覺得很奇怪,為什么要采用這么麻煩的方式表示負數,更直覺的方式難道不好嗎?
二進制補碼的好處
首先,要明確一點 。計算機內部用什么方式表示負數,其實是無所謂的 。只要能夠保持一一對應的關系,就可以用任意方式表示負數 。所以,既然可以任意選擇,那么理應選擇一種用的爽直觀方便的方式 。
二進制的補碼就是最方便的方式 。它的便利體現在,所有的加法運算可以使用同一種電路完成 。
還是以-8作為例子 。假定有兩種表示方法 。一種是直覺表示法,即10001000;另一種是2的補碼表示法,即11111000 。請問哪一種表示法在加法運算中更方便?隨便寫一個計算式,16
+ (-8) = ?16的二進制表示是 00010000,所以用直覺表示法,加法就要寫成:
00010000
+10001000原碼形式-8
---------
10011000
可以看到,如果按照正常的加法規則,就會得到10011000的結果,轉成十進制就是-24 。顯然,這是錯誤的答案 。也就是說,在這種情況下,正常的加法規則不適用于正數與負數的加法,因此必須制定兩套運算規則,一套用于正數加正數,還有一套用于正數加負數 。從電路上說,就是必須為加法運算做兩種電路 。所以用原碼表示負數是不行的 。
現在,再來看二進制的補碼表示法 。
00010000
+11111000補碼形式-8
---------
100001000
可以看到,按照正常的加法規則,得到的結果是100001000 。注意,這是一個9位的二進制數 。我們已經假定這是一臺8位機,因此最高的第9位是一個溢出位,會被自動舍去 。所以,結果就變成了00001000,轉成十進制正好是8,也就是16 + (-8) 的正確答案 。這說明了,2的補碼表示法可以將加法運算規則,擴展到整個整數集,從而用一套電路就可以實現全部整數的加法 。
二進制補碼的本質,本質是用來表示負整數的
在回答二進制補碼為什么能正確實現加法運算之前,我們先看看它的本質,也就是那兩個求補碼步驟的轉換方法是怎么來的 。下面描述了一個正數怎么求它對應負數在計算機的表達方式 。比如128,正數為10000000,但是驚奇的發現-128也是10000000 。但是這里由于屬于數據類型的限定,第八位同樣一個1代表不同的含義,前面的 1是數值位,后面數的 1是符號位 。
要將正數轉成對應的負數,其實只要用0減去這個數就可以了 。比如,-8其實就是0-8 。用模數的概念解釋如下圖
已知8的二進制是00001000,-8就可以用下面的式子求出:
00000000
-00001000
---------- - - -
因為00000000(被減數)小于0000100(減數),所以不夠減 。請回憶一下小學算術,如果被減數的某一位小于減數,我們怎么辦?很簡單,問上一位借1就可以了 。
所以,0000000也問上一位借了1,也就是說,被減數其實是100000000,這是重點;算式也就改寫成:
100000000
-00001000
---------- - -
11111000
進一步觀察,可以發現可分拆為100000000 = 11111111 + 1,所以上面的式子可以拆成兩個:
11111111
-00001000
---------
11110111取反
+00000001加一
---------
11111000
二進制的補碼兩個轉換步驟就是這么來的 。
舉個例子,比如-128補碼的由來,先把正整數128二進制表示出來10000000求-128的補碼
1 1 1 1 1 1 1 1
-1 0 0 0 0 0 0 0
---------
0 1 1 1 1 1 1 1
+0 0 0 0 0 0 0 1
---------
1 0 0 0 0 0 0 0
即-128的補碼是10000000 。8位的結構能表示的最小數是-128;
所以可以總結求補碼的范式是這樣的:
求n位系統的一個數正數A :
01101101101……….11101100(n位二進制),怎么求他的補碼呢,就用n位的1111111111111111111…..111(n位)
- 11101101101……….11101100(n位二進制) + 1= A的補碼就行啦!但是
如果一個1111111111111…..111111(n位全為1的正整數的補碼),要用1111111111111…….11111(n+1位) - 1111111111111…..111111(n位全為1的正整數) +1 才能求的她對應的補碼 。
如uint16 A =200, uint16 B =65535,那么C =A-B;
65535的補碼:正數65535為1111 1111 1111 1111,進行下面的計算求得B的補碼即-B;先展示有補碼符號位,即補碼有最高位位1的;
1 1111 1111 1111 1111 -1111 1111 1111 1111+1 =1 0000 0000 0000 0001,相當于被減數是10 0000 0000 0000 0000(18位) =1 1111 1111 1111 1111 +1
因為A和B 都是16位的無符號數,所以65535的補碼最高位舍去,相當于被減數是1 0000 0000
0000 0000 =1111 1111 1111 1111
+1,即可以用上面的范式方法,但是這樣-B就沒有體現它的負數的符號位了;當然這是因為16位運算超出16位的位都舍去了 。即-B=1;即A-B=
200+1 =201 。其實也可以用模數概念解釋A -B;如下圖正數的模數
為什么正數加法也適用于二進制的補碼?
實際上,我們要證明的是,X-Y或X+(-Y)可以用X加上Y的2的補碼(-Y)完成 。
Y的二進制補碼等于(11111111-Y)+1 。所以,X加上Y的2的補碼,就等于:X + (11111111-Y) + 1;我們假定這個算式的結果等于Z,即 Z = X + (11111111-Y) + 1 。
接下來,分成兩種情況討論 。
第一種情況,如果X小于Y,那么Z是一個負數 。這時,我們就對Z采用補碼的逆運算,就是在做一次求補碼運算,求出它對應的正數絕對值,只要前面加上負號就行了 。所以,
Z = -[11111111-Z+1] = -[11111111-(X + (11111111-Y) + 1)+1)] = X -
Y;這里如果X Y Z都是無符號型的,且X < Y 那么Z 最終得到的數是|X-Y|距離的絕對值了,比如X=1,Y=
255,那么Z=2,因為從255到1只要加兩次就到了 。這里你不要問我為什么,這里就用到上面的模概念 。
第二種情況,如果X大于Y,這意味著Z肯定大于11111111,但是我們規定了這是8位機,最高的第9位是溢出位,必須被舍去,舍去相當于減去嗎!所以減去100000000 。所以,
Z = Z - 100000000 = X + (11111111-Y) + 1 - 100000000 = X - Y
這就證明了,在正常的加法規則下,可以利用2的補碼得到正數與負數相加的正確結果 。換言之,計算機只要部署加法電路和補碼電路,就可以完成所有整數的加法 。
在離散數學中什么叫真值
真值:一個命題總是有一個值 這個值叫真值
真值 只有真和假兩種情況
分別用T(TRUE)和F(FALSE)表示
什么叫真值在程序設計中,普遍是把true當做真值,把false當作假值 。在C++中0表示為假,任何非0值表示為真 。true和false也是C++內置數據類型bool的兩種取值 。
數學中的真值什么意思真值是一個變量本身所具有的真實值,它是一個理想的概念,一般是無法得到的 。所以在計算誤差時,一般用約定真值或相對真值來代替 。
約定真值是一個接近真值的值,它與真值之差可忽略不計 。實際測量中以在沒有系統誤差的情況下,足夠多次的測量值之平均值作為約定真值 。
相對真值是指當高一級標準器的誤差僅為低一級的時,可認為高一級的標準器或儀表示值為低一級的相對真值 。
在計算機數值表示中,用正負號加絕對值表示數據的形式被稱為“真值” 。
一個量或確定的目標在被觀測的瞬時條件下所具有的確切數[量]值的理想值 。注:這種值僅在所有誤差原因均已消除或對象總體是無限多時才能達到 。在對象總體有限的場合,必須考慮完整的總體
【真值是什么意思(在離散數學中什么叫真】關于真值是什么和真值是什么意思的內容就分享到這兒!更多實用知識經驗,盡在 m.apearl.cn
- 交易只是開始,服務永無止境是什么意思,永無止境是什么意思形容什么生肖
- 什么樣的人不能吃靈芝孢子粉 靈芝孢子粉的禁忌人群是什么
- 乙肝不能吃10種食物 乙肝不能吃的10種食物是什么
- 配眼鏡軸位是什么意思 配眼鏡軸位意思是什么 眼鏡軸位一般是多少
- 口紅究竟是什么東西做的 口紅的原料是赭石樹脂和等
- 那達慕節是什么族的 那達慕是哪個民族的節日是7月9日至7月18日
- i類卡和ii類卡區別是什么,i類卡 ii類卡
- 人生五味雜陳的意思,五味雜陳的意思和造句
- 泥濘意思相近的詞語,泥濘意思是什么二年級下冊 你是用什么方法知道
- 豎心旁加沈的右邊是什么,豎心旁加個沈
