1存储器
某计算机有2个字节的寻址能力,访问其存储器的一个单元需要16位,该存储器的大小是多少(以字节为单位)?此存储器共存储多少位?
存储器大小为
2
16
=
64
k
b
2^{16}=64kb
216=64kb,每个单元16位得存储了1M位
2ASCII和16进制
如下代码输出哪些内容?
printf ("%c %x", 13 + ‘A’, 130);
答案
N 82
%c数据类型为字符,根据ASCII表中A的ASCII码为65加13后为78,则为N
%x数据类型为16进制数130=16*8+2则输出为82
3原码、反码和补码
使用8位二进制数位,19的二进制原码、反码和补码表示分别是什么?-19的二进制原码、反码和补码表示分别是什么?
正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反。正数的补码与原码相同,负数的补码为 其原码除符号位外所有位取反(得到反码了),然后最低位加1.
19
原码:00010011
反码:00010011
补码:00010011
-19
原码:10010011
反码:11101100
补码:11101101
注:请依次给出这6个二进制数,并用空格隔开
4浮点
请给出32.9375的IEEE浮点数(32位)的十六进制表示。
注:需以x开头。
分数第一位1省略
正确答案:x4203C000
5二维逻辑运算
做如下二进制数逻辑运算,结果以二进制形式给出。
((NOT 1101) AND 0101) OR (1101 AND (NOT 0101))
#include<iostream>
using namespace std;
int main()
{ int x;
x=((~ 13) & 5) |(13 & (~ 5));
cout<< x <<endl;
int y;
cin>>y;
return 0;
}
得出结果是
换成二进制为1000
这中间若是计算~5
#include<iostream>
using namespace std;
int main()
{ int x;
// x=((~ 13) & 5) |(13 & (~ 5));
x=~5
;
cout<< x <<endl;
int y;
cin>>y;
return 0;
}
最后结果为-6,5的原码为0101,去反为1010,这为补码,它的反码为1001,则原码为0110,则为6,故取反得-6.