中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

java~二進制補碼(ma)的用途

二進制補碼(Binary Two's Complement)是一種(zhong)表(biao)示(shi)有符號整數的方(fang)法(fa),在(zai)計算機中廣(guang)泛使(shi)用。它是通過對正數取反(fan)加一得到(dao)負(fu)數的表(biao)示(shi)方(fang)式。

在二(er)進制補碼表(biao)示中,一(yi)個固定(ding)位(wei)(wei)數(shu)(shu)(shu)的(de)整數(shu)(shu)(shu)由固定(ding)數(shu)(shu)(shu)量的(de)二(er)進制位(wei)(wei)表(biao)示,其中最高(gao)位(wei)(wei)被(bei)用作符號位(wei)(wei)。對于N位(wei)(wei)的(de)二(er)進制補碼表(biao)示,最高(gao)位(wei)(wei)(最左側的(de)位(wei)(wei))為符號位(wei)(wei),0表(biao)示正數(shu)(shu)(shu),1表(biao)示負數(shu)(shu)(shu)。

正數的二進制補碼表示與其二進制原碼表示相同。例如,十進制數3的二進制補碼表示為00000011

負數(shu)的二進制補碼表示(shi)通過以下步驟獲(huo)得:

  1. 將對應正數的二進制表示取反,即將0變為1,將1變為0。
  2. 對取反后的結果加1。

例如,十進制數-3的二進制補碼表示為11111101。以(yi)下是對應步(bu)驟的說明:

  1. 正數3的二進制表示是00000011
  2. 取反得到11111100
  3. 加1得到11111101,即-3的二進制補碼表示。

使用(yong)二進制補碼的(de)好處是可以將正(zheng)數(shu)和負(fu)數(shu)的(de)加法、減(jian)法等(deng)運(yun)算(suan)轉化為(wei)相同(tong)的(de)二進制操(cao)作,簡(jian)化了計算(suan)機的(de)運(yun)算(suan)邏輯。

需要注意(yi)的(de)(de)(de)是(shi),二進(jin)制補(bu)碼(ma)表(biao)示中(zhong)的(de)(de)(de)最(zui)小負(fu)(fu)數(shu)的(de)(de)(de)絕(jue)對值比最(zui)大正(zheng)數(shu)的(de)(de)(de)絕(jue)對值多(duo)一(yi)個單(dan)位(wei),這是(shi)由于二進(jin)制補(bu)碼(ma)表(biao)示中(zhong),負(fu)(fu)數(shu)的(de)(de)(de)范圍比正(zheng)數(shu)的(de)(de)(de)范圍多(duo)一(yi)個。例(li)如,在(zai)8位(wei)的(de)(de)(de)二進(jin)制補(bu)碼(ma)表(biao)示中(zhong),最(zui)小的(de)(de)(de)負(fu)(fu)數(shu)是(shi)-128,而最(zui)大的(de)(de)(de)正(zheng)數(shu)是(shi)127。

容易搞混

  • java里byte是有符號的整數,它占用的存儲空間為1個字節,即8位,使用8個二進制數表示,也可以用2個16進制數表示,取值為-128~127
  • java里沒有無符號的byte[],如果你非要表示無符號的,那需要使用short/int類型來表示,就是使用integer的8位,通過int unsignedByte = byteValue & 0xFF;可以得到無符號的byte值

byte[]來表示int數字

通過(guo)byte[4]來表(biao)示(shi)一(yi)個(ge)int數字,byte[4]就是4個(ge)字節的意思,每個(ge)byte[0]表(biao)示(shi)一(yi)個(ge)字段,取值都是-128~127,可以測試一(yi)下

		log.info("{}", Bytes.toBytes(256));// [0, 0, 1, 0]
		log.info("{}", Bytes.toBytes(255));// [0, 0, 0, -1]
		log.info("{}", Bytes.toBytes(128));// [0, 0, 0, -128]
		log.info("{}", Bytes.toBytes(129));// [0, 0, 0, -127]
		log.info("{}", Bytes.toBytes(-1));// [-1, -1, -1, -1]
		log.info("{}", Bytes.toBytes(127));// [0, 0, 0, 127]

從上面的(de)代碼(ma)中,我們(men)看到一個int類型的(de)-1通(tong)過(guo)byte[]表示(shi)為[-1,-1,-1,-1],它是取-1的(de)補碼(ma),再加(jia)1得到的(de)。

posted @ 2023-06-20 13:51  張占嶺  閱讀(251)  評論(0)    收藏  舉報