十六進製制的加法HDU2057

2021-08-15 03:24:08 字數 1330 閱讀 5673

題目求的是十六進製制的加法。剛開始想的是把十六進製制轉化為十進位制,進行加法運算後,再轉化為十六進製制。

1.其實c中存在十六進製制的輸入輸出(%x,%x)。所以這題可以直接用十六進製制輸入,然後進行十六進製制的運算(其實不管是什麼進製,在計算機中都是以二進位制來計算的,只是按輸入輸出的格式不同,而強制轉化為其它的進製),就像十進位制的加法一樣。這裡要注意的是輸入小於15位,結果超過了二進位制中的32位而小於64位。所以這裡用__int64的型別。輸入輸入出格式就是(%i64x,%i64x)。由於%i64x,不能輸出負數,所以負數的輸出要做處理。

在這裡 你要明白的是 計算機存入的資料是二進位制 0 1 

所以scanf("%d",&a);就是你輸入的乙個十進位制 比如 你輸入10(這邊是十進位制數) 他也代表10(十六進製制) 計算機儲存是

10000scanf("%x",&a);就是你輸入的乙個十六進製制 比如 你輸入10(是這邊是十六進製制數) 他也代表8(十進位制) 計算機儲存是 1000而在計算b=a/15-273 的時候 計算機是用它們各自表示的二進位制來計算的

因此事實上得到的b存在計算機裡是以二進位制存在的 ,只是當你輸出時候利用強制轉換輸出才變成我們想要的十進位制或者十六進製制 比如: 在b輸出時候用十六進製制輸出 也就是printf("%x",b);

2.int64是有符號 64 位整數資料型別,相當於c++中的long long、 c# 中的 long 和 sql server 中的 bigint,表示值介於 -2^63 ( -9,223,372,036,854,775,808) 到2^63-1(+9,223,372,036,854,775,807 )之間的整數。

#include

int main()

%x與%i64x的區別?

%x是按小寫輸出,既10-15輸出是a-f

%x是按大寫輸出,既10-15輸出是a-f

hdu 2057 十六進製制的加減

這題可以直接用十六進製制輸入,然後進行十六進製制的運算 其實不管是什麼進製,在計算機中都是以二進位制來計算的,只是按輸入輸出的格式不同,而強制轉化為其它的進製 就像十進位制的加法一樣。這裡要注意的是輸入小於15位,結果超過了二進位制中的32位而小於64位。所以這裡用 int64的型別。輸入輸入出格式...

HDU2057 A B again 十六進製制加法

解釋如下 題目求的是十六進製制的加法。剛開始想的是把十六進製制轉化為十進位制,進行加法運算後,再轉化為十六進製制。所以這題可以直接用十六進製制輸入,然後進行十六進製制的運算 其實不管是什麼進製,在計算機中都是以二進位制來計算的,只是按輸入輸出的格式不同,而強制轉化為其它的進製 就像十進位制的加法一樣...

三十六進製制加法

暴力轉換,就是把兩個36進製的數轉換成10進製,如何用10進製進行加減,最後再轉化成36進製,這種比較簡單就不再展示 重點講解第二種直接用36進製進行相加。看 有注釋 public class jinzhizhuanhuan aslist的返回物件是乙個arrays內部類,並沒有實現集合的修改方法,...