Ⅰ 二進制補碼問題(c語言)
一樓說的不對,由原碼到補碼,再由補碼到原碼應該都是取反+1,不存在-1的情況。
1000,0000,0000,0000計算機會識別為負數(即先確定符號),接下來就是求其絕對值了,先取反0111,1111,1111,1111,再加1,得1000,0000,0000,0000,1後面有15個0,所以是2^15,即32768,帶上符號就是-32768.
不過根據你的程序,有些奇怪的是在vc環境中,int 是4位元組的有符號整型,32767+1是不會出現溢出的。
只是在有的變數為2位元組有符號時,范圍是-32768~32767,才會出現溢出。
補充:TC環境中定義的int位元組數與vc不同。上微機原理課的時候,老師說過是連符號位一起運算的。
Ⅱ C語言編程十進制整數如何轉化為二進制,八位數字補碼
二進制的我們不考慮,這是機器語言
十進制的轉換到八進制的輸出是不用%d
用%o就行了。
Ⅲ C語言中,如何求一個數的二進制補碼舉個例子,謝謝!
正數的補碼是其原值
例如佔一個位元組的10,二進制為0 000 1010, 第一位0表示+,
補碼也是0 000 1010
負數的話-10, 二進制為1 000 1010, 第一位1 表示-,
補碼求法為 :符號位不變,其餘取反再加1
1 000 1010 取反 1 111 0101
再加1: 1 111 0110
Ⅳ c語言-24轉換為二進制補碼是多少
11101000——這是單位元組的,要兩個位元組的就在前面加一位元組全1,要4位元組就在前面加3位元組全1。