解決Java中的強(qiáng)制類型轉(zhuǎn)換和二進(jìn)制表示問題
1、Java中用補(bǔ)碼形式表示
2、第一位正負(fù)位,1表示負(fù),0表示正。
3、原碼:一個數(shù)的二進(jìn)制表示。
3的原碼00000011 -3的 原碼 100000114、反碼:負(fù)數(shù)原碼按位取反(符號位不變)。正數(shù)原碼本身。
3的反碼00000011 -3的反碼111111005、補(bǔ)碼:正數(shù)是原碼本身。負(fù)數(shù)反碼加1。
3的補(bǔ)碼是00000011 -3的補(bǔ)碼是11111101int占4個字節(jié),32位
byte占1個字節(jié),8位
所以強(qiáng)轉(zhuǎn)時會截?cái)?。?4位
在內(nèi)存中表示形式( 注意java中是以補(bǔ)碼表示一個數(shù),所以表示形式是補(bǔ)碼,不是原碼! ):
int a = 3 00000000 00000000 00000000 00000011 (強(qiáng)轉(zhuǎn)byte時前面24個0被截?cái)啵? byte b = 3 00000011 int a = -3 11111111 11111111 11111111 11111101 (強(qiáng)轉(zhuǎn)byte時前面24個1被截?cái)啵? byte b = -3 11111101
已知負(fù)數(shù)的補(bǔ)碼,求負(fù)數(shù):
補(bǔ)碼-1=反碼,反碼按位取反=該負(fù)數(shù)絕對值
已知負(fù)數(shù),求負(fù)數(shù)的補(bǔ)碼:
1、負(fù)數(shù)原碼除了符號位,按位取反(不含符號位),加1。
2、負(fù)數(shù)絕對值的補(bǔ)碼(也就是原碼),按位取反(含符號位),加1
例子:
java int 128轉(zhuǎn)為byte,值:
128為正數(shù),補(bǔ)碼為10000000(前面24個0省略),變成byte,只剩下10000000(byte為1個字節(jié)),因?yàn)殚_頭是1,所以為負(fù)數(shù)。即1個負(fù)數(shù)的補(bǔ)碼是10000000。反碼是01111111,原碼是1000000。是128.因?yàn)槭秦?fù)數(shù),所以是-128。
總結(jié)
以上所述是小編給大家介紹的解決Java中的強(qiáng)制類型轉(zhuǎn)換和二進(jìn)制表示問題,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!
相關(guān)文章
實(shí)例講解Java設(shè)計(jì)模式編程中的OCP開閉原則
這篇文章主要介紹了Java設(shè)計(jì)模式編程中的開閉原則,開閉原則的大意被作者總結(jié)為用抽象構(gòu)建框架,用實(shí)現(xiàn)擴(kuò)展細(xì)節(jié),需要的朋友可以參考下2016-02-02springboot集成shiro詳細(xì)總結(jié)
這幾天在看 shiro,用 springboot 集成了一下,下面的這個例子中主要介紹了 shiro 的認(rèn)證和授權(quán),以及鹽值加密的功能.程序可以運(yùn)行起來.這里只做一個簡單的介紹,后續(xù)會針對各個功能做一個詳細(xì)的介紹,這里不做過多的贅述,需要的朋友可以參考下2021-05-05解決使用httpclient傳遞json數(shù)據(jù)亂碼的問題
這篇文章主要介紹了解決使用httpclient傳遞json數(shù)據(jù)亂碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01java開發(fā)Activiti進(jìn)階篇流程實(shí)例詳解
這篇文章主要為大家介紹了java開發(fā)Activiti進(jìn)階篇流程實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08java調(diào)用js文件的兩種常用方法示例(支持V8引擎)
在Java中調(diào)用JavaScript的方法通常涉及到使用Java的腳本引擎,下面這篇文章主要給大家介紹了關(guān)于java調(diào)用js文件的兩種常用方法(支持V8引擎)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06