[ZhuJei]C++実験2.1/2.2
6805 ワード
実験内容://zhangguizhuはいい先生です!テーマ2.1ビット演算を利用して1つの128ビットの数を2倍に拡大する
: 128 。
: :4 12 9 5
:00000000000000000000000000001010 00000000000000000000000000010010 00000000000000000000000000011000 00000000000000000000000000001000
2.2 : int float , , .
: int float , , .
: :8
:00000000000000000000000000001000
, 。
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 0x3f3f3f3f
#define EPS 1e-24
using namespace std;
// 2.1,2.2
/*Tips: ,128 int
* int, ll
* ,
* float , int/float
* java floatBitsToInt(),
* :
3
4 12 9 5
4294967295 2147483647 5 6
2147483647 5 6 4294967295
3
8
127
9999
4
125.5
2.33
0.125
1024.2
*/
typedef long long ll;
const ll Mod = 1e9 + 7;
//
void print_binary(int x){
for(int i=31;i>=0;i--){
cout<< ((x&(1<0);
}
cout<<" ";
}
void print_binary2(char x){
for(int i=8;i>=0;i--){
cout<< ((x&(1<0);
}
cout<<" ";
}
// 1/0
int check(int x){
/*if((x&(1<<31))!=0)
return 1;
else return 0;*/
return ((x&(1<<31))!=0);
}
void problem_one(){
cout<<"128 2( ):"<unsigned int a,b,c,d;//a
int T;
cin>> T;
while(T--){
cin>>a>>b>>c>>d;
int flag_a = check(a),flag_b = check(b),flag_c = check(c),flag_d = check(d);
a <<= 1;b <<= 1;c <<= 1;d <<= 1;//cout<
c = c | flag_d;
b = b | flag_c;
a = a | flag_b;
//
print_binary(d); ;print_binary(c); print_binary(b); print_binary(a); cout<void problem_two_int(){
cout<<" :"<int T;
cin>> T;
int num;
while(T--){
cin>>num;
print_binary(num);
cout<void problem_two_float(){
cout<<" :"<int T;
cin>> T;
float num;
while(T--){
cin>>num;
int *numD = (int *)#
print_binary(*numD);
//char *p = (char *) #
//print_binary(*numD);
/*print_binary2(*p);
print_binary2(*(p+1));
print_binary2(*(p+2));
print_binary2(*(p+3));*/
cout<int main(){
std::ios::sync_with_stdio(false);
std::cin.tie(0);
problem_one();
problem_two_int();
problem_two_float();
return 0;
}