我想如果某個整數是由scanf寄存器中,那麼這個數字就是2s補碼錶示。我可以通過printf獲取該號碼嗎?我搜索了很多網站,但無法找到C初學者的代碼...可以從寄存器中獲得整數的二進制補碼錶示嗎?
1
A
回答
0
浮點數不是存儲在2的補碼中,而是存儲在IEEE 754中。要打印某些二進制數據的二進制表示,請首先參閱https://stackoverflow.com/a/112956/1689451。你可以把你的浮點數組合成一個整數來提取單個字節:
#include <stdio.h> /* printf */
#include <string.h> /* strcat */
// taken from https://stackoverflow.com/a/112956/1689451
const char *byte_to_binary(int x)
{
static char b[9];
b[0] = '\0';
int z;
for (z = 128; z > 0; z >>= 1)
{
strcat(b, ((x & z) == z) ? "1" : "0");
}
return b;
}
union {
float f;
unsigned char b[4];
} x;
x.f = 0.34;
for (int i = 0; i < 4; i++) {
printf("%s", byte_to_binary(x.b[i]));
}
我沒有試過這個例子;可能不會編譯,但應該提供正確方向的提示。
0
在c中沒有標準打印「二補數」或二進制數字,如果這是你的問題。這項任務必須分開解決。例如。
for (i=0;i<32;i++) putc('0'+((number >> (31-i)) & 1));
//或複製到本地串
否則scanf("%f", &my_float);
打印與printf("%f", my_float);
相關問題
- 1. 如何在ARM中獲得寄存器值的二進制補碼?
- 2. 二進制補碼錶示
- 3. 以二進制補碼錶示格式負整數
- 4. 如何以編程方式獲得二進制數的二進制補碼
- 5. 獲得負數的二進制補碼的十六進制
- 6. 長整數的二進制補碼
- 7. 什麼是二進制補碼整數?
- 8. 十進制數的二進制補碼
- 9. 二進制補碼
- 10. 表示二進制補碼的十六進制值
- 11. 有符號整數到二進制補碼十六進制
- 12. 帶分數的二進制數的二進制補碼
- 13. std_logic_vector的二進制補碼
- 14. VB.NET中無符號整數的二進制補碼
- 15. 基數的二進制補碼二進制數
- 16. 使用二進制補碼的負整數的Perl函數
- 17. 獲得一個字節的二進制補碼
- 18. 如何獲得int的32位二進制補碼位模式?
- 19. 7位二進制補碼
- 20. 二進制補碼stm32 c
- 21. 二進制補碼算術
- 22. 二進制補碼查詢
- 23. 16位二進制補碼
- 24. 二進制補碼轉換
- 25. 二進制補碼減法
- 26. 非整數數字二進制表示
- 27. 64位二進制補碼形式的負整數
- 28. 二進制中最小的二進制補碼
- 29. Python中十六進制數的二進制補碼
- 30. Verilog中的二進制補碼
歡迎堆棧溢出!你的問題有點含糊 - 你能試着更好地解釋你想做什麼嗎?顯示一些代碼通常有助於告訴我們問題是什麼。特別是,短語「float」和「2的補碼」通常不會一起出現。 –
'float'在內部不使用2的補碼,維基百科關於2的補碼的文章甚至不提及用於非整數的內容。 –
謝謝你們我編輯了這個問題... – user1802087